assayer-pro/yii2-sitemap-module
用于自动生成XML Sitemap的Yii2模块
1.3.6
2017-12-12 18:59 UTC
Requires
- php: >=5.4.0
- yiisoft/yii2: >=2.0.6
Requires (Dev)
- ext-sqlite3: *
- codeception/codeception: 2.0.*
- yiisoft/yii2-codeception: ~2.0.0
- yiisoft/yii2-faker: *
README
用于自动生成XML Sitemap的Yii2模块。
安装
通过 composer 安装此扩展是首选方式。
- 运行以下命令
php composer.phar require --prefer-dist "assayer-pro/yii2-sitemap-module" "*"
或者将以下内容添加到应用程序的 composer.json
文件的 require
部分
"assayer-pro/yii2-sitemap-module" : "*"
require
- 配置应用程序配置文件中的
cache
组件,例如
'components' => [ 'cache' => [ 'class' => 'yii\caching\FileCache', ], ]
- 在应用程序配置文件的
modules
部分中添加新的模块,例如
'modules' => [ 'sitemap' => [ 'class' => 'assayerpro\sitemap\Module', ], ... ],
- 在组件部分中添加对 sitemap 的配置
'components' => [ 'robotsTxt' => [ 'class' => 'assayerpro\sitemap\RobotsTxt', 'userAgent' => [ // Disallow url for all bots '*' => [ 'Disallow' => [ ['/api/default/index'], ], 'Allow' => [ ['/api/doc/index'], ], ], // Block a specific image from Google Images 'Googlebot-Image' => [ 'Disallow' => [ // All images on your site from Google Images '/', // Files of a specific file type (for example, .gif) '/*.gif$', ], ], ], ], 'sitemap' => [ 'class' => 'assayerpro\sitemap\Sitemap', 'models' => [ // your models 'app\modules\news\models\News', // or configuration for creating a behavior [ 'class' => 'app\modules\news\models\News', 'behaviors' => [ 'sitemap' => [ 'class' => '\assayerpro\sitemap\behaviors\SitemapBehavior', 'scope' => function ($model) { /** @var \yii\db\ActiveQuery $model */ $model->select(['url', 'lastmod']); $model->andWhere(['is_deleted' => 0]); }, 'dataClosure' => function ($model) { /** @var self $model */ return [ 'loc' => Url::to($model->url, true), 'lastmod' => strtotime($model->lastmod), 'changefreq' => \assayerpro\sitemap\Sitemap::DAILY, 'priority' => 0.8 ]; } ], ], ], ], 'urls'=> [ // your additional urls [ 'loc' => ['/news/default/index'], 'changefreq' => \assayerpro\sitemap\Sitemap::DAILY, 'priority' => 0.8, 'news' => [ 'publication' => [ 'name' => 'Example Blog', 'language' => 'en', ], 'access' => 'Subscription', 'genres' => 'Blog, UserGenerated', 'publication_date' => 'YYYY-MM-DDThh:mm:ssTZD', 'title' => 'Example Title', 'keywords' => 'example, keywords, comma-separated', 'stock_tickers' => 'NASDAQ:A, NASDAQ:B', ], 'images' => [ [ 'loc' => 'http://example.com/image.jpg', 'caption' => 'This is an example of a caption of an image', 'geo_location' => 'City, State', 'title' => 'Example image', 'license' => 'http://example.com/license', ], ], ], ], 'enableGzip' => true, // default is false 'cacheExpire' => 1, // 1 second. Default is 24 hours, 'sortByPriority' => true, // default is false ], ],
- 在 AR 模型中添加行为,例如
use assayerpro\sitemap\behaviors\SitemapBehavior; public function behaviors() { return [ 'sitemap' => [ 'class' => SitemapBehavior::className(), /**'batchSize' => 100,*/ 'scope' => function ($model) { /** @var \yii\db\ActiveQuery $model */ $model->select(['url', 'lastmod']); $model->andWhere(['is_deleted' => 0]); }, 'dataClosure' => function ($model) { /** @var self $model */ return [ 'loc' => Url::to($model->url, true), 'lastmod' => strtotime($model->lastmod), 'changefreq' => Sitemap::DAILY, 'priority' => 0.8 ]; } ], ]; }
- 在应用程序配置文件的
urlManager
中添加新的规则,例如
'urlManager' => [ 'rules' => [ ['pattern' => 'sitemap-<id:\d+>', 'route' => '/sitemap/default/index', 'suffix' => '.xml'], ['pattern' => 'sitemap', 'route' => 'sitemap/default/index', 'suffix' => '.xml'], ], ],
控制台生成 sitemap
从模块配置中移除 sitemap 部分
添加控制台命令配置
'controllerMap' => [ 'sitemap' => [ 'class' => 'assayerpro\sitemap\console\CreateController', ], ],
为 urlManager 添加 baseUrl
'urlManager' => [ 'baseUrl' => '', 'hostInfo' => 'http://example.com/', ],
从控制台运行命令
$ ./yii sitemap/create