php生成sitemap网站地图插件 - samdark/sitemap

发布于 2020-04-22 22:19:35

samdark/sitemap 是一款 Sitemap和Sitemap索引构建器。支持谷歌和360。

特征

  • 创建站点地图文件:常规或gzip压缩。
  • 创建多语言站点地图文件。
  • 创建站点地图索引文件。
  • 如果达到URL限制或文件大小限制,则自动创建新文件。
  • 快速且高效存储。

安装

通过Composer进行安装非常简单:

composer require samdark/sitemap

然后引入Composer类vendor/autoload.php即可

如何使用

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

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

// 添加网址 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);

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

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

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

选项

There are methods to configure Sitemap instance:

  • setMaxUrls($number). Sets maximum number of URLs to write in a single file.
    Default is 50000 which is the limit according to specification and most of
    existing implementations.
  • setMaxBytes($number). Sets maximum size of a single site map file.
    Default is 10MiB which should be compatible with most current search engines.
  • setBufferSize($number). Sets number of URLs to be kept in memory before writing it to file.
    Default is 10. Bigger values give marginal benefits.
    On the other hand when the file size limit is hit, the complete buffer must be written to the next file.
  • setUseIndent($bool). Sets if XML should be indented. Default is true.
  • setUseGzip($bool). Sets whether the resulting sitemap files will be gzipped or not.
    Default is false. zlib extension must be enabled to use this feature.

There is a method to configure Index instance:

  • setUseGzip($bool). Sets whether the resulting index file will be gzipped or not.
    Default is false. zlib extension must be enabled to use this feature.

配置Sitemap实例的方法:

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

配置Index实例的方法:

  • setUseGzip($bool)。设置是否将结果索引文件压缩。默认值为false。zlib必须启用扩展程序才能使用此功能。

测试

composer install
./vendor/bin/phpunit
0 条评论

发布
问题