romi45 / yii2-seo-behavior
为 Yii2 模型和元标签提供 SEO 行为和辅助工具,使用模式并具有可能性
Requires
- yiisoft/yii2: ~2.0
README
本扩展为 SEO 元标签和标题标签提供行为函数。同时提供视图辅助器以注册元标签和标题。
安装
我最喜欢的安装方法是使用 composer。
运行以下命令:
$ composer require romi45/yii2-seo-behavior:~1.0
或者将以下内容添加到您的 composer.json
文件的 require
部分:
"romi45/yii2-seo-behavior": "~1.0"
然后运行迁移
php yii migrate --migrationPath="@vendor/romi45/yii2-seo-behavior/migrations"
配置
首先,您需要配置您的模型
use romi45\seoContent\components\SeoBehavior; class Post extends ActiveRecord { /** * @inheritdoc */ public function behaviors() { return [ [ 'seo' => [ 'class' => SeoBehavior::className(), // This is default values. Usually you can not specify it 'titleAttribute' => 'seoTitle', 'keywordsAttribute' => 'seoKeywords', 'descriptionAttribute' => 'seoDescription' ], ], ]; } /** * @inheritdoc */ public function rules() { return [ // ... [['seoTitle', 'seoKeywords', 'seoDescription'], 'safe'], [['seoTitle'], 'checkSeoTitleIsGlobalUnique'], // It recommends for title to be unique for every page. You can ignore this recommendation - just delete this rule. // ... ]; } }
现在,您可以在表单中使用它了
<?= $form->field($model, 'seoTitle')->textInput(); ?> <?= $form->field($model, 'seoKeywords')->textInput(); ?> <?= $form->field($model, 'seoDescription')->textarea(); ?>
如您所见,seoTitle
、seoKeywords
和 seoDescription
是可以访问模型 SEO 内容的属性(默认)。
一旦您提交了包含上述字段的表单,它们将被自动保存并链接到我们的 Post
模型。
要在视图中注册元标签并设置标题,请使用以下代码
use romi45\seoContent\components\SeoContentHelper; /** * You can also user partial register functions * @see SeoContentHelper::registerAll() */ SeoContentHelper::registerAll($model);
不要忘记布局中的标题标签。
<title><?= Html::encode($this->title) ?></title>
模式
您可以在值中使用模式,并将其替换为一些模型属性、应用程序配置属性、应用程序参数或视图参数,其类型由前缀定义。
模型属性
%%model_ATTRIBUTE_NAME%%
例如,%%model_title%%
将被替换为 php $model->title
应用程序全局配置属性
%%appConfig_ATTRIBUTE_NAME%%
例如,%%appConfig_name%%
将被替换为 php Yii::$app->name
应用程序全局参数属性
%%appParam_ATTRIBUTE_NAME%%
例如,%%appParam_contactEmail%%
将被替换为 php Yii::$app->params['contactEmail''
视图全局参数属性
%%viewParam_ATTRIBUTE_NAME%%
例如,%%viewParam_contactEmail%%
将被替换为 php Yii::$app->view->params['contactEmail''
。
分隔符
%%sep%%
默认情况下,分隔符模式被替换为 '-'。如果您想使用其他分隔符值,您需要识别 php Yii::$app->view->params['titleSeparator''
参数。
提示:您可以使用 romi45\seoContent\components\SeoPatternHelper::SEPARATOR_VIEW_PARAMETER_KEY
常量值代替 'titleSeparator'。
全局 SEO 模式
您可以使用全局 SEO 模式为所有模型实例设置 is_global
参数为 1
对 seoContent
模型。只需在视图中创建如下表单
<?php $form = \yii\widgets\ActiveForm::begin(); ?> <?= $form->field($model, 'seoTitle')->textInput(); ?> <?= $form->field($model, 'seoKeywords')->textInput(); ?> <?= $form->field($model, 'seoDescription')->textarea(); ?> <?php \yii\widgets\ActiveForm::end(); ?>
然后在控制器中处理它
/* @var $model Page */ $model = new Page(); /* @var $seo SeoContent */ $seo = $model->getSeoContentModel(); if ($seo->load(Yii::$app->request->post())) { $seo->is_global = 1; $seo->save(); }
SQL 缓存
要启用 SQL 查询缓存,请将行为配置中的 enableSqlQueryCache
参数设置为 true
。您还可以通过 sqlQueryCacheDuration
参数设置缓存持续时间。示例
/** * @inheritdoc */ public function behaviors() { return [ 'seo' => [ 'class' => SeoBehavior::className(), 'enableSqlQueryCache' => true, 'sqlQueryCacheDuration' => 24*60*60*30*12, // 1 year ] ]; }
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。