samdark/sitemap

生成 Sitemap 和 Sitemap 索引工具

资助包维护!
samdark
Patreon

2.4.1 2023-11-01 08:41 UTC

This package is auto-updated.

Last update: 2024-08-30 01:12:46 UTC


README

XML Sitemap 和 XML Sitemap 索引生成器。

GitHub release (latest SemVer) GitHub Workflow Status (branch) Packagist PHP Version Support Packagist Downloads Packagist Downloads GitHub

特性

  • 创建 sitemap 文件:普通格式或压缩格式。
  • 创建多语言 sitemap 文件。
  • 创建 sitemap 索引文件。
  • 使用自定义样式表。
  • 当达到 URL 限制或文件大小限制时,自动创建新文件。
  • 快速且内存高效。

安装

通过 Composer 安装非常简单

composer require samdark/sitemap

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

如何使用它

use samdark\sitemap\Sitemap;
use samdark\sitemap\Index;

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

// add some URLs
$sitemap->addItem('http://example.com/mylink1');
$sitemap->addItem('http://example.com/mylink2', time());
$sitemap->addItem('http://example.com/mylink3', time(), Sitemap::HOURLY);
$sitemap->addItem('http://example.com/mylink4', time(), Sitemap::DAILY, 0.3);

// set sitemap stylesheet (see example-sitemap-stylesheet.xsl)
$sitemap->setStylesheet('http://example.com/css/sitemap.xsl');

// 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->addItem('http://example.com/about');
$staticSitemap->addItem('http://example.com/tos');
$staticSitemap->addItem('http://example.com/jobs');

// set optional stylesheet (see example-sitemap-stylesheet.xsl)
$staticSitemap->setStylesheet('http://example.com/css/sitemap.xsl');

// 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');

// set index stylesheet (see example in repo)
$index->setStylesheet('http://example.com/css/sitemap.xsl');

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

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

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

多语言 sitemap

use samdark\sitemap\Sitemap;

// create sitemap
// be sure to pass `true` as second parameter to specify XHTML namespace
$sitemap = new Sitemap(__DIR__ . '/sitemap_multi_language.xml', true);

// Set URL limit to fit in default limit of 50000 (default limit / number of languages) 
$sitemap->setMaxUrls(25000);

// add some URLs
$sitemap->addItem('http://example.com/mylink1');

$sitemap->addItem([
    'ru' => 'http://example.com/ru/mylink2',
    'en' => 'http://example.com/en/mylink2',
], time());

$sitemap->addItem([
    'ru' => 'http://example.com/ru/mylink3',
    'en' => 'http://example.com/en/mylink3',
], time(), Sitemap::HOURLY);

$sitemap->addItem([
    'ru' => 'http://example.com/ru/mylink4',
    'en' => 'http://example.com/en/mylink4',
], time(), Sitemap::DAILY, 0.3);

// set stylesheet (see example-sitemap-stylesheet.xsl)
$sitemap->setStylesheet('http://example.com/css/sitemap.xsl');

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

选项

有方法可以配置 Sitemap 实例

  • setMaxUrls($number)。设置单个文件中可写入的最大 URL 数量。默认值为 50000,这是规范和大多数现有实现的限制。
  • setMaxBytes($number)。设置单个站点地图文件的最大大小。默认值为 10MiB,应该与大多数当前搜索引擎兼容。
  • setBufferSize($number)。设置在写入文件之前保存在内存中的 URL 数量。默认值为 10。更大的值带来微小的优势。另一方面,当达到文件大小限制时,必须将完整缓冲区写入下一个文件。
  • setUseIndent($bool)。设置 XML 是否缩进。默认值为 true。
  • setUseGzip($bool)。设置生成的 sitemap 文件是否压缩。默认值为 false。必须启用 zlib 扩展才能使用此功能。
  • setStylesheet($string)。设置 xml-stylesheet 标签。默认不生成标签。请参阅示例 example-sitemap-stylesheet.xsl

有方法可以配置 Index 实例

  • setUseGzip($bool)。设置生成的索引文件是否压缩。默认值为 false。必须启用 zlib 扩展才能使用此功能。
  • setStylesheet($string)。设置 xml-stylesheet 标签。默认不生成标签。请参阅示例 example-sitemap-stylesheet.xsl

运行测试

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

composer install
./vendor/bin/phpunit