alanmburr / pagetitle
在 Laravel 视图中管理页面标题
Requires
- php: ^7.4|^8.0
- illuminate/support: ^9.21|^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^10.1
README
通常,你会遇到这样的情况,你想有更多的控制来设置不同视图的页面标题。虽然可以在主视图中呈现页面标题,但处理像分隔符使用或附加/前缀默认页面标题这样的格式可能会很麻烦。
此包简化了此过程。
安装
首先通过 Composer 安装此包
composer require rephlux/pagetitle
Laravel 用户
如果您是 Laravel 用户,则需要在您的 config/app.php
文件中添加一个服务提供者。
'providers' => [ '...', Rephlux\PageTitle\PageTitleServiceProvider::class ];
此包还提供了一个外观,如果您想在控制器和视图中使用外观,也可以在 config/app.php
中注册它
'aliases' => [ '...' 'PageTitle' => Rephlux\PageTitle\Facades\PageTitle::class, ]
在 Laravel 5.5 中,服务提供者和别名会自动注册。如果您正在使用 Laravel 5.5,则可以跳过这些步骤。
版本 2.0
如果您仍然使用 PHP 7.0 或 5.6,则需要使用此包的版本 1.0。版本 2.0 及以上仅兼容 PHP 7.1 或更高版本。
此包的版本 2.0 也兼容 Laravel 5.5 及更高版本。
用法
要简单添加单个页面标题,请调用适当的 add()
方法,并传递一个字符串作为参数
public function index() { \PageTitle::add('Welcome to our Homepage'); return view('hello'); }
您还可以使用全局的 pagetitle
辅助函数。
public function index() { pagetitle('Welcome to our Homepage'); return view('hello'); }
要一次性添加多个页面标题部分,只需传递一个数组作为参数。
public function index() { pagetitle([ 'About us', 'Profile' ]); return view('hello'); }
将 pagetitle 添加到 blade 视图
现在您可以在视图中显示完整连接的页面标题。最好的方法是将其用于主布局文件。
<head> <meta charset="UTF-8"> <title>{{ pagetitle()->get() }}</title> ... </head>
要按相反顺序显示完整连接的页面标题,请传递 reverse
参数。
<head> <meta charset="UTF-8"> <title>{{ pagetitle()->get('reverse') }}</title> ... </head>
在 downward
模式下,首先按相反顺序连接所有页面标题部分,然后附加页面名称(如果已设置在选项中)
<head> <meta charset="UTF-8"> <title>{{ pagetitle()->get('downward') }}</title> ... </head>
默认值
如果您使用 Laravel,有三个配置选项您需要考虑。首先,使用以下命令发布默认配置
php artisan vendor:publish --provider="Rephlux\PageTitle\PageTitleServiceProvider"
这将在: config/pagetitle.php
中添加一个新的配置文件。
<?php return [ /* |-------------------------------------------------------------------------- | Page name |-------------------------------------------------------------------------- | | Type your page name for your website. | This will be used when there are more titles to concatenate with. | */ 'page_name' => '', /* |-------------------------------------------------------------------------- | Default title when empty |-------------------------------------------------------------------------- | | This will be used when therer is no other title. | Mainly used for the home page of your website. | */ 'default_title_when_empty' => '', /* |-------------------------------------------------------------------------- | Delimiter |-------------------------------------------------------------------------- | | Titles will be concatenated using this delimiter. | */ 'delimiter' => ' :: ', ];
page_name
如果您想,可以将页面名称输入到此键,以将名称附加到/前缀到连接的页面标题。
default_title_when_empty
如果集合中没有页面标题部分,将使用此文本。
delimiter
当您想使用分隔符时,只需更新此键并添加您想用作分隔符的字符串。
更改配置值
可以通过页面标题对象实例的相应设置方法更改每个配置参数
- setDelimeter(delimeter)
- setPageName(pageName)
- setDefault(default)
示例用法
public function index() { pagetitle('My Blog Post')->setPageName('My Blog')->setDelimeter(' / '); return view('hello'); }
要获取当前配置值,请使用页面标题对象实例上的相应获取方法
- getDelimeter()
- getPageName()
- getDefault()