refinery29/sitemap

提供构建和编写网站地图的组件。

此包的官方仓库似乎已消失,因此该包已被冻结。

0.5.0 2016-11-28 13:14 UTC

This package is not auto-updated.

Last update: 2024-06-08 17:26:47 UTC


README

Build Status Code Climate Latest Stable Version Total Downloads

此仓库提供构建和编写遵循谷歌推荐的XML网站地图的组件。

安装

运行

$ composer require refinery29/sitemap

内容

组件

此包提供了构建网站地图或网站地图索引所需的所有组件。

组件是不可变对象,即它们的修改器会克隆实例,然后设置值。这有助于防止无意中修改组件图的问题。

我们感兴趣构建两种不同类型的图

  • Component\UrlSet(表示一组URL)
  • Component\SiteMapIndex(表示一组网站地图)

写入器

构建组件图后,需要将其传递给写入器,以便将其转换为XML。

有两种不同类型的写入器

  • Writer\UrlSetWriter(将Component\UrlSet转换为XML)
  • Writer\SitemapIndexWriter(将Component\SitemapIndex转换为XML)

创建网站地图

URL

在我们可以创建网站地图之前,我们需要Url,所以让我们创建一个

use Refinery29\Sitemap\Component;

$url = new Component\Url('http://www.example.org/foo/bar.html');

$url = $url
    ->withLastModified(new DateTime())
    ->withChangeFrequency(Component\Url::CHANGE_FREQUENCY_MONTHLY)
    ->withPriority(0.8)
;

💡 谷歌对任何网站地图可以添加的URL数量有限制,为50,000个。

图像

我们可能希望向Url添加图像,所以让我们创建一个

use Refinery29\Sitemap\Component;

$image = new Component\Image\Image('http://www.example.org/img/beach.jpg');

$image = $image
    ->withTitle('Our day at the beach')
    ->withCaption('Here we are sitting at the bar, enjoying our drinks')
    ->withGeoLocation('Majorca, Canyamel')
;

现在我们可以添加图像

$url = $url->withImages([
    $image,
]);

💡 我们可以将多达1,000张图像附加到Url上。

新闻

我们可能希望向Url添加新闻,如果URL标识了一个新闻文章,那么我们也这样做

use Refinery29\Sitemap\Component;

$publication = new Component\News\Publication(
    'The Example Times',
    'en'
);

$news = new Component\News\News(
    $publication,
    new DateTime(),
    'Something happened and you should know about it',
);

$url = $url->withNews([
    $news,
]);

💡 News有许多更多选项,请查看源代码!

视频

我们可能希望向Url添加视频,如果URL标识了一个可以观看视频的页面,那么我们也这样做

use Refinery29\Sitemap\Component;

$video = new Component\Video\Video(
    'http://www.example.org/img/funny-video-thumbnail.gif',
    'Jerry dropped his lemonade',
    'Here you can see how Jerry dropped his lemonade and everyone laughs, it is really funny!',
    'http://www.example.org/img/funny-video.mov',
);

$url = $url->withVideos([
    $video,
]);

💡 Video有许多更多选项,请查看源代码!

UrlSet

现在,让我们使用之前创建的Url创建一个UrlSet

use Refinery29\Sitemap\Component;

$urlSet = new Component\UrlSet([
    $url,
]);

编写网站地图

当我们完成UrlSet的构建后,我们可能希望将其写入,所以让我们这样做

use Refinery29\Sitemap\Writer;

$urlSetWriter = new Writer\UrlSetWriter();

$xml = $urlSetWriter->write($urlSet);

创建网站地图索引

如果我们有大量URL,我们可能希望将我们的网站地图分散到多个文件中并对其进行索引。

网站地图

在我们可以创建SitemapIndex之前,我们需要一些Sitemap,所以让我们创建它们

use Refinery29\Sitemap\Component;

$lastModified = new DateTime();

$sitemap = new Component\Sitemap('http://www.example.org/funny.xml');

$sitemap = $sitemap->withLastModifed($lastModified);

$anotherSitemap = new Component\Sitemap(
    'http://www.example.org/news.xml',
    $lastModified
);

SitemapIndex

让我们使用之前创建的Sitemap创建一个SitemapIndex

use Refinery29\Sitemap\Component;

$sitemapIndex = new Component\SitemapIndex([
    $sitemap,
    $anotherSitemap,
]);

编写网站地图索引

当我们完成SitemapIndex的构建后,我们可能希望将其写入,所以让我们这样做

use Refinery29\Sitemap\Writer;

$sitemapIndexWriter = new Writer\SitemapIndexWriter();

$xml = $sitemapIndexWriter->write($sitemapIndex);

贡献

请参阅CONTRIBUTING.md

行为准则

请参阅CONDUCT.md

许可证

此包使用MIT许可证许可。