odanylevskyi / yii2-sitemap-xml
地图扩展提供了生成并发送XML文件到搜索引擎的功能。
dev-master
2018-04-01 18:53 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-23 15:25:14 UTC
README
地图扩展提供了生成并发送XML文件到搜索引擎的功能。
安装
安装此扩展的首选方式是通过composer。
运行以下命令:
php composer.phar require --prefer-dist odanylevskyi/yii2-sitemap-xml "@dev"
或者将以下内容添加到你的composer.json文件的require部分:
"odanylevskyi/yii2-sitemap-xml": "@dev"
使用
扩展安装完成后,只需将以下代码放入你的config\main.php文件中的modules部分
'modules' => [ ... 'sitemap' => [ 'class' => '\odanylevskyi\sitemap\Module', 'items' => [ [ 'urls' => [ 'site/index', 'site/login', 'site/contact', ['hotel/view', 'id' => 1], .... ], ], ], ... ],
还需要将以下行添加到components部分的urlManager中:'sitemap.xml' => 'sitemap/default/index'
[
...
'rules' => [
...
'sitemap.xml' => 'sitemap/default/index',
...
]
...
如果你有多个sitemap.xml文件或者你想使用sitemap-index.xml文件,可以将useIndex添加到模块设置中
... 'sitemap' => [ 'class' => '\odanylevskyi\sitemap\Module', 'useIndex' => true, ... ], ...
要使用模型生成URL,你需要在模块配置中添加以下内容
... 'sitemap' => [ 'class' => '\odanylevskyi\sitemap\Module', 'items' => [ [ 'class' => 'frontend\models\Artile', 'urls' => [ ['article/view', 'id' => ':id'], ['article/view-by-name', 'name' => ':title'], .... ], ], ], ...
其中:id、:title应该是Article模型的有效属性。你还可以在你的模型中添加SQL规则(例如Article)。例如,假设你想只添加通过版主审核的文章。你可以这样做
... 'sitemap' => [ 'class' => '\odanylevskyi\sitemap\Module', 'items' => [ [ 'class' => 'frontend\models\Artile', 'rules' => function($model) { return $model->andWhere(['is_active'=>1]); }, 'urls' => [ ['article/view', 'id' => ':id'], ['article/view-by-name', 'name' => ':title'], .... ], ], ], ...
rules必须是Closure实例,否则它将被忽略。
要使用文件缓存,需要在模块设置中添加expire,其中expire是秒数。默认是-1,表示不缓存。
... 'sitemap' => [ 'class' => '\odanylevskyi\sitemap\Module', 'expire' => 30*24*3600; //30 days from now ... ...
要指定URL的优先级和频率,请使用以下结构
... 'sitemap' => [ 'class' => '\odanylevskyi\sitemap\Module', 'items' => [ [ 'class' => 'frontend\models\Artile', 'urls' => [ [ 'path' => article/view', 'id' => ':id'], 'priority' => 0.5, 'freq' => 'monthly', ], [ 'path' => 'article/view-by-name', 'name' => ':title'], 'priority' => 0.8, 'freq' => 'daily', ], .... ], ], ], ...