refinery29 / sitemap
提供构建和编写网站地图的组件。
此包的官方仓库似乎已消失,因此该包已被冻结。
0.5.0
2016-11-28 13:14 UTC
Requires
- php: ^5.6 || ^7.0
- beberlei/assert: ^2.6.7
Requires (Dev)
- codeclimate/php-test-reporter: 0.3.2
- phpunit/phpunit: ^5.6.5
- refinery29/php-cs-fixer-config: 0.5.0
- refinery29/test-util: 0.9.5
README
此仓库提供构建和编写遵循谷歌推荐的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许可证许可。