odanylevskyi/yii2-sitemap-xml

地图扩展提供了生成并发送XML文件到搜索引擎的功能。

安装: 185

依赖关系: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

dev-master 2018-04-01 18:53 UTC

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',
                   ],
                   ....
               ],
           ],
       ],
...