yii2-webivan1 / yii2-sitemap
该软件包最新版本(1.0.8)没有可用的许可信息。
Yii2 的 Sitemap 扩展
1.0.8
2021-04-05 14:56 UTC
Requires
- php: >=7.0
- guzzlehttp/guzzle: *
- yiisoft/yii2: ~2.0.14
README
Ext Sitemap Yii 2
安装
composer require yii2-webivan1/yii2-sitemap
或
"require": {
"yii2-webivan1/yii2-sitemap": "dev-master"
}
配置
配置 web.php
<?php return [ // ... 'bootstrap' => [ // ... 'sitemap' ], 'modules' => [ // ... 'sitemap' => [ 'class' => 'webivan\sitemap\SitemapModule', 'defaultSitemapUrl' => 'sitemap.xml' ] ], 'components' => [ 'sitemapComponent' => [ 'class' => 'webivan\sitemap\components\SitemapComponent', // Отключаем генерацию sitemap при // открытии ссылки /sitemap.xml 'generateSitemapsByUrl' => false, // Если у нас генерируются файлы через урл, // то кэшируем их 'timeLive' => 3600 * 24 * 5, // Ключ для кэширования 'cacheNameKey' => 'SitemapKeyCache', // Приоритет страниц по дефолту, // можно убрать поставив значение null 'defaultPriority' => '0.7', // Домен который будет в sitemap.xml // например http://example.com 'domain' => 'http://example.com', // Указывая путь для sitemap файлов, // создайте предварительно все папки с правами // для записи и чтения 'pathSitemapFiles' => '@webroot/sitemaps', // Статические урлы 'staticUrl' => [ ['loc' => '/', 'priority' => '1'], ['loc' => '/about'], ], // Конфигурация 'models' => [ // Вы можете описать функицю которая будет возвращать // список урлов function (): array { $models = \common\models\Pages::findAll(['state' => 2]); $output = []; foreach ($models as $model) { $output[] = [ 'loc' => "/{$model->alias}", 'changefreq' => 'daily' ]; } return $output; }, // Вы можете указать конфиг параметров для авто генерации урлов // Если данных много то рекомендую использовать этот способ [ 'model' => 'common\models\Product', 'select' => 'id, alias', 'where' => 'state = 2', 'urls' => [ ['loc' => '/products/{alias}', 'changefreq' => 'daily'], ['loc' => '/product/detail/{id}', 'changefreq' => 'daily'], ], // динамические урлы 'appendUrls' => function () { $tags = Yii::$app->params['tags']; return array_map(function ($append) { return ['loc' => "/tags/{$append}/{alias}"]; }, $tags); } ], // ... ] ] ] ];
通过控制台生成文件
在控制台配置中定义 @webroot 别名,如果使用默认路径
创建控制台命令控制器,例如
<?php namespace app\commands; use yii\console\Controller; class SitemapController extends Controller { /** * @inheritdoc */ public function actions() { return [ 'index' => [ 'class' => 'webivan\sitemap\actions\ActionSitemap' ] ]; } }
然后运行: php yii sitemap/index
日志
<?php return [ 'components' => [ 'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'logFile' => '@app/runtime/logs/sitemap.log', 'categories' => ['sitemap'], 'logVars' => ['error', 'warning'], ] ] ] ] ];