yii2-webivan1/yii2-sitemap

There is no license information available for the latest version (1.0.8) of this package.

Extension sitemap Yii2

Installs: 141

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 2

Forks: 0

Open Issues: 0

Type:yii2-extension

1.0.8 2021-04-05 14:56 UTC

This package is not auto-updated.

Last update: 2024-06-12 03:16:05 UTC


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