inblank / yii2-seobility
用于管理ActiveRecord SEO数据的Yii2行为
Requires
- yiisoft/yii2: ~2.0.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-20 22:02:48 UTC
README
yii2-seobility
行为允许您管理ActiveRecord模型的SEO数据。对于每个模型,您都可以存储多个包含SEO数据的记录,并根据条件进行选择。如果未找到符合条件的数据,则将返回默认数据,如果没有默认数据,则返回空值的数据。
每个SEO数据条目包含以下字段:title
、keywords
和description
。
安装
安装此扩展的首选方式是通过composer。
导航到项目文件夹并运行控制台命令
$ composer require inblank/yii2-seobility
或添加
"inblank/yii2-seobility": "~0.1"
到您的composer.json
文件的require
部分。
配置
数据库
行为使用ActiveRecord模型的数据库连接来存储SEO数据。行为不会创建或检查所需表。必须在使用之前创建表。
要存储和检索数据的表名,行为基于附加到ActiveRecord模型的表名创建。名称是通过在ActiveRecord模型的表名后添加后缀_seo
来创建的。要获取模型的表名,模型使用ActiveRecord::tableName()
方法。
示例
- 如果模型使用表
model
,则行为将使用表model_seo
。- 如果模型使用表
{{%model}}
,则行为将使用表{{%model_seo}}
。
要创建表,请使用以下SQL查询,将model_seo
替换为所需的表名
查询使用MySQL语法
CREATE TABLE `model_seo`( `model_id` INT NOT NULL DEFAULT 0, `condition` INT NOT NULL DEFAULT 0, `title` TEXT NOT NULL, `keywords` TEXT NOT NULL, `description` TEXT NOT NULL, PRIMARY KEY (`model_id`, `condition`) );
模型
要使用行为,只需将其附加到ActiveRecord模型,如Yii2文档中所述
use inblank\seobility\SeobilityBehavior; /** * ... */ class Model extends \yii\db\ActiveRecord { public function behaviors() { return [ SeobilityBehavior::className(), ]; } }
如果您已正确创建用于存储SEO数据的表,则配置完成。
使用方法
配置成功后,您可以使用行为方法来管理ActiveRecord模型的SEO数据。
设置默认SEO数据
默认SEO数据条件为=0
要设置默认SEO数据
$model = Model::findOne(1); // set data by the behavior method $model->setSeobility([ 'title' => 'SEO title for model', 'keywords' => 'model, seo, keywords, yii2', 'description' => 'Simple model with SEO data' ]); // ... or by direct access $model->seobility = [ 'title' => 'SEO title for model', 'keywords' => 'model, seo, keywords, yii2', 'description' => 'Simple model with SEO data' ]; // not necessarily set all field for SEO data // code below set only `title` field $model->seobility = [ 'title' => 'Chnaged SEO title', ]; // need to save model to store all setting SEO data $model->save();
保存模型后,默认SEO数据将包含定义的值,并且这些值将随时可用。
注意:如果模型未通过验证或未保存,则SEO数据也不会保存。
设置带有条件的SEO数据
要设置带有条件的SEO数据
$model = Model::findOne(1); // setting a data with condition is only possible through the method of behavior // set SEO data for condition=1 $model->setSeobility([ 'title' => 'Another SEO title', 'keywords' => 'model, seo, keywords, yii2', 'description' => 'This description is different' ], 1); // need to save model to store all setting SEO data $model->save();
注意:如果模型未通过验证或未保存,则SEO数据也不会保存。
获取默认SEO数据
要获取默认SEO数据
$model = Model::findOne(1); // getting default data through the method of behavior $seo = $model->getSeobility(); // ... or by direct access $seo = $model->seobility;
获取数据后,变量$seo
将包含一个包含键title
、keywords
和description
的数组。
即使未指定数据,也会获取数据。在这种情况下,所有数组字段都将包含空值。
获取带有条件的SEO数据
要获取带有条件的SEO数据
$model = Model::findOne(1); // getting data with condition is only possible through the method of behavior $seo = $model->getSeobility(1);
将获取condition=1
的SEO数据,如果没有这样的数据,则获取默认SEO数据,如果没有默认数据,则为空。
通过方法参数,您可以指定如果请求的数据未找到时获取哪些数据。
// not get the default data if data with `condition=1` not found // i.e. if the data with `condition=1` will not be found, it returns // an array with empty values $seo = $model->getSeobility(1, false); // get data with `condition=2` if not found data with `condition=1` // and if not found data with `condition=1` will return an array with empty values $seo = $model->getSeobility(1, true, 2);
获取所有SEO数据
要获取所有SEO数据
$model = Model::findOne(1); // getting all data $seo = $model->getAllSeobility();
获取数据后,变量 $seo
将包含一个包含所有SEO数据的数组。数组的索引是 condition
的值。
删除默认SEO数据
要删除默认SEO数据
$model = Model::findOne(1); // remove default data $seo = $model->deleteSeobility();
注意:请注意,删除操作立即执行,不需要
$model->save()
方法。删除的数据无法恢复。
根据条件删除SEO数据
要删除符合条件的SEO数据
$model = Model::findOne(1); // remove data with condition=1 $seo = $model->deleteSeobility(1);
注意:请注意,删除操作立即执行,不需要
$model->save()
方法。删除的数据无法恢复。
删除模型的所有SEO数据
要删除模型的所有SEO数据
$model = Model::findOne(1); // remove ALL model's SEO data $seo = $model->deleteAllSeobility();
注意:请注意,删除操作立即执行,不需要
$model->save()
方法。删除的数据无法恢复。