envytek/sitemap-generator

网站地图和网站地图索引构建器

v1.0.4 2021-01-19 10:32 UTC

This package is auto-updated.

Last update: 2024-09-29 05:49:04 UTC


README

多语言网站地图构建器。

特性

  • 创建网站地图文件:常规或gzip压缩。
  • 支持网站地图扩展。包含的扩展有多语言网站地图、视频/图片网站地图。
  • 创建网站地图索引文件。
  • 当达到URL限制或文件大小限制时,自动创建新文件。
  • 快速且内存高效。

安装

通过Composer安装非常简单

composer require EnvyTek/
composer require EnvyTek/sitemap:dev-master

之后,确保您的应用程序通过包含vendor/autoload.php来自动加载Composer类。

如何使用它

use EnvyTek\Sitemap\Sitemap;
use EnvyTek\Sitemap\Index;

// create sitemap
$sitemap = new Sitemap(__DIR__ . '/sitemap.xml');

// add some URLs
$sitemap->addUrl(new Url('http://example.com/mylink1'));
$sitemap->addUrl(
    (new Url('http://example.com/mylink2'))
        ->setLastModified(new \DateTime())
);
$sitemap->addUrl(
    (new Url('http://example.com/mylink3'))
        ->setLastModified(new \DateTime())
        ->setChangeFrequency(Frequency::HOURLY)
);
$sitemap->addUrl(
    (new Url('http://example.com/mylink4'))
        ->setChangeFrequency(Frequency::DAILY)
        ->setLastModified(new \DateTime())
        ->setPriority(0.3)
);

// write it
$sitemap->write();

// get URLs of sitemaps written
$sitemapFileUrls = $sitemap->getSitemapUrls('http://example.com/');

// create sitemap for static files
$staticSitemap = new Sitemap(__DIR__ . '/sitemap_static.xml');

// add some URLs
$staticSitemap->addUrl(new Url('http://example.com/about'));
$staticSitemap->addUrl(new Url('http://example.com/tos'));
$staticSitemap->addUrl(new Url('http://example.com/jobs'));

// write it
$staticSitemap->write();

// get URLs of sitemaps written
$staticSitemapUrls = $staticSitemap->getSitemapUrls('http://example.com/');

// create sitemap index file
$index = new Index(__DIR__ . '/sitemap_index.xml');

// add URLs
foreach ($sitemapFileUrls as $sitemapUrl) {
    $index->addSitemap($sitemapUrl);
}

// add more URLs
foreach ($staticSitemapUrls as $sitemapUrl) {
    $index->addSitemap($sitemapUrl);
}

// write it
$index->write();

多语言网站地图

use EnvyTek\Sitemap\Sitemap;

// create sitemap declaring you need alternate links support
$sitemap = new Sitemap(__DIR__ . '/sitemap_multi_language.xml', [AlternateLink::class]);

// add some URLs

$sitemap->addUrl(
    (new Url('http://example.com/en/mylink2'))
        ->setLastModified(new \DateTime())
        ->setChangeFrequency(Frequency::HOURLY)
        ->add(new AlternateLink('en', 'http://example.com/en/mylink1'))
        ->add(new AlternateLink('ru', 'http://example.com/ru/mylink1'))
);

$sitemap->addUrl(
    (new Url('http://example.com/en/mylink2'))
        ->setLastModified(new \DateTime())
        ->setChangeFrequency(Frequency::HOURLY)
        ->add(new AlternateLink('en', 'http://example.com/en/mylink2'))
        ->add(new AlternateLink('ru', 'http://example.com/ru/mylink2'))
);

// write it
$sitemap->write();

选项

有方法可以配置Sitemap实例

  • setMaxUrls($number)。设置单个文件中要写入的最大URL数量。默认是50000,这是根据规范和大多数现有实现的限制。
  • setMaxBytes($number)。设置单个网站地图文件的最大大小。默认是10MiB,应与大多数当前搜索引擎兼容。
  • setBufferSize($number)。设置写入文件前保留在内存中的URL数量。默认是10。较大的值有微小的优势。另一方面,当达到文件大小限制时,必须将整个缓冲区写入下一个文件。
  • setUseIndent($bool)。设置XML是否应该缩进。默认是true。
  • setUseGzip($bool)。设置生成的网站地图文件是否进行gzip压缩。默认是false。必须启用zlib扩展才能使用此功能。

有一个方法可以配置Index实例

  • setUseGzip($bool)。设置生成的索引文件是否进行gzip压缩。默认是false。必须启用zlib扩展才能使用此功能。

运行测试

为了运行测试,请执行以下命令

composer install
./vendor/bin/phpunit