assayer-pro/yii2-sitemap-module

Yii2 module for automatically generation XML Sitemap

Maintainers

👁 assayer-pro

Package info

github.com/assayer-pro/yii2-sitemap-module

Type:yii2-extension

pkg:composer/assayer-pro/yii2-sitemap-module

Statistics

Installs: 14 448

Dependents: 1

Suggesters: 0

Stars: 5

Open Issues: 1

1.3.6 2017-12-12 18:59 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 9ce0e5baddc07210105b1b735c814d6bf613cb98

xmlmoduleSitemapyii2

This package is auto-updated.

Last update: 2026-06-29 01:01:41 UTC


README

👁 PHP version
👁 Scrutinizer Code Quality
👁 Code Coverage
👁 Build Status

Yii2 module for automatically generating XML Sitemap.

Installation

The preferred way to install this extension is through composer.

  • Either run
php composer.phar require --prefer-dist "assayer-pro/yii2-sitemap-module" "*"

or add

"assayer-pro/yii2-sitemap-module" : "*"

to the require section of your application's composer.json file.

  • Configure the cache component of your application's configuration file, for example:
'components' => [
 'cache' => [
 'class' => 'yii\caching\FileCache',
 ],
]
  • Add a new module in modules section of your application's configuration file, for example:
'modules' => [
 'sitemap' => [
 'class' => 'assayerpro\sitemap\Module',
 ],
...
],
  • Add confuguration for sitemap into components section:
'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
 ],
],
  • Add behavior in the AR models, for example:
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
 ];
 }
 ],
 ];
}
  • Add a new rule for urlManager of your application's configuration file, for example:
'urlManager' => [
 'rules' => [
 ['pattern' => 'sitemap-<id:\d+>', 'route' => '/sitemap/default/index', 'suffix' => '.xml'],
 ['pattern' => 'sitemap', 'route' => 'sitemap/default/index', 'suffix' => '.xml'],
 ],
],

Console generate sitemap

Remove sitemap section from modules configuration.

Add console command configuration:

 'controllerMap' => [
 'sitemap' => [
 'class' => 'assayerpro\sitemap\console\CreateController',
 ],
 ],

Add baseUrl for urlManager:

 'urlManager' => [
 'baseUrl' => '',
 'hostInfo' => 'http://example.com/',
 ],

Run command from console:

$ ./yii sitemap/create

Resources