itstructure/yii2-sitemap-generator

Yii2 component for generate sitemap.xml files.

1.0.0 2020-07-06 08:05 UTC

This package is not auto-updated.

Last update: 2024-12-21 21:26:03 UTC


README

Yii2 component for generation sitemap.xml

It is reworked package, based on Dreamjobs yii2 sitemap generator

Installation

Run command

composer require itstructure/yii2-sitemap-generator "~1.0.0"

Configuration

Set in "./console/config/main.php"

return [
    'controllerMap' => [
        'sitemap' => [
            'class' => 'Itstructure\Sitemap\SitemapController',
            'baseUrl' => 'https://example.com',
            'modelsPath' => '@console/models/sitemap', // Sitemap-data models directory
            'modelsNamespace' => 'console\models\sitemap', // Namespace in [[modelsPath]] files
            'savePathAlias' => '@frontend/web', // Where would be placed the generated sitemap-files
            'sitemapFileName' => 'sitemap.xml', // Name of main sitemap-file in [[savePathAlias]] directory
        ],
    ],
];

Set in "./environments/prod/console/config/main-local.php"

'components' => [
    // fix console create url
    'urlManager' => [
        'baseUrl' => 'http://example.com',
    ],
],

Set in "./environments/dev/console/config/main-local.php"

'components' => [
    // fix console create url
    'urlManager' => [
        'baseUrl' => 'http://example.local',
    ],
],

Run command

php ./init

OR just apply same config to your "/console/config/main-local.php"

ALSO you can merge urlManager rules from frontend(or common) to console config. Just change "/console/config/main.php" file:

// get config of urlManager from frontend for correctly create urls in console app
$frontend = require(__DIR__ . '/../../frontend/config/main.php');
$frontendUrlManager = [
    'components' => [
        'urlManager' => $frontend['components']['urlManager'],
    ],
];

// ...

// Merge frontend urlManager config with console application main config
return yii\helpers\ArrayHelper::merge($frontendUrlManager, [
    'id' => 'app-console',
    // ...
];

Also useful append .gitignore for ignore all generated sitemaps files:

# sitemaps
/frontend/web/sitemap*.xml

TBD: creating sitemap-data models

Usage

Run Yii console command in project root:

php ./yii sitemap