samdark / sitemap
生成 Sitemap 和 Sitemap 索引工具
2.4.1
2023-11-01 08:41 UTC
Requires
- php: >=5.3.0
- ext-xmlwriter: *
Requires (Dev)
- phpunit/phpunit: ~4.4
README
XML Sitemap 和 XML Sitemap 索引生成器。
特性
- 创建 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