zhelyabuzhsky/yii2-sitemap 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zhelyabuzhsky/yii2-sitemap

最新稳定版本:1.2.0

Composer 安装命令:

composer require zhelyabuzhsky/yii2-sitemap

包简介

A Yii2 tool to generate sitemap.xml.

README 文档

README

Build Status Total Downloads

Yii2 extension to generate sitemap files for large web-sites through Yii2 console command

Installation

The preferred way to install this extension is through composer.

$ php composer.phar require zhelyabuzhsky/yii2-sitemap

or add

"zhelyabuzhsky/yii2-sitemap": "^1.1"

to the require section of your composer.json file.

Features

  • Generates multiple sitemaps (large sites)
  • Creates index sitemap file
  • Gzip compression of .xml files
  • Disallow urls support (through regular expression array)

Configuration

1. Configure urlManager at console config

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

NOTE Both params hostInfo and baseUrl are required for Yii2 console app.

NOTE urlManager rules section usually repeats your frontend urlManager configuration, so you could merge it at console config (see yiisoft/yii2#1578 (comment)):

Show details

console/main.php

$frontendUrlManager = require(__DIR__ . '/../../frontend/config/UrlManager.php');
//...
'urlManager' => array_merge($frontendUrlManager, [
    'hostInfo' => 'https://example.com'
]),

frontend/config/UrlManager.php

<?php
return [
    'baseUrl' => '/',
    'class' => 'yii\web\UrlManager',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
      //...
    ],
];

?>

2. Configure Sitemap component at console config components section

'components' => [
  'sitemap' => [
    'class' => '\zhelyabuzhsky\sitemap\components\Sitemap',
  ],
],

Example of using extra Sitemap params

'components' => [
  'sitemap' => [
    'class' => '\zhelyabuzhsky\sitemap\components\Sitemap',
    'maxUrlsCountInFile' => 10000,
    'sitemapDirectory' => 'frontend/web',
    'optionalAttributes' => ['changefreq', 'lastmod', 'priority'],
    'maxFileSize' => '10M',
  ],
 ],

where

  • maxUrlsCountInFile - max count of urls in one sitemap file;
  • sitemapDirectory - directory to place sitemap files;
  • optionalAttributes - list of used optional attributes;
  • maxFileSize - maximal file size. Zero to work without limits. So you can specify the following abbreviations k - kilobytes and m - megabytes. By default 10m.

Usage

1. Impement SitemapEntityInterface for the models you want to use at sitemap

Show example

common\models\Category.php

use yii\db\ActiveRecord;
use zhelyabuzhsky\sitemap\models\SitemapEntityInterface;

class Category extends ActiveRecord implements SitemapEntityInterface
{
    /**
     * @inheritdoc
     */
    public function getSitemapLastmod()
    {
        return date('c');
    }
    /**
     * @inheritdoc
     */
    public function getSitemapChangefreq()
    {
        return 'daily';
    }
    /**
     * @inheritdoc
     */
    public function getSitemapPriority()
    {
        return 0.5;
    }
    /**
     * @inheritdoc
     */
    public function getSitemapLoc()
    {
        // Use urlManager rules to create urls
        return $url = Yii::$app->urlManager->createAbsoluteUrl([
            'page/view',
            'pageSlug' => $this->slug,
        ]);
        // or directly
        // return 'http://localhost/' . $this->slug;
    }
    /**
     * @inheritdoc
     */
    public static function getSitemapDataSource()
    {
        return self::find();
    }
}

2. Create Yii2 controller for console command

use yii\console\Controller;

class SitemapController extends Controller
{
  public function actionCreate()
  {
    \Yii::$app->sitemap
      ->addModel(Item::className())
      ->addModel(Category::className(), \Yii::$app->db) // Also you can pass \yii\db\Connection to the database connection that you need to use
      ->setDisallowUrls([
        '#url1#',
        '#url2$#',
      ])
      ->create();
    }
}

3. Run console command

php yii sitemap/create

Testing

Set enviroment variable SERVER_NAME (e.g. https://example.com)

$ ./vendor/bin/phpunit

Security

If you discover any security related issues, please email zhelyabuzhsky@icloud.com instead of using the issue tracker.

Credits

License

GNU General Public License, version 3. Please see License File for more information.

统计信息

  • 总下载量: 38.84k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 34
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 34
  • Watchers: 5
  • Forks: 11
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0
  • 更新时间: 2015-06-04