[thepixeldeveloper/sitemap]轻松省心的为网站生成站点地图

在我们做业务开发的时候,一般不会去做一个站点地图的功能,但是对于一个CMS系统或者内容站,站点地图是标配,毕竟我们希望网站能够被各类爬虫准确的没有遗漏的抓取.

什么是站点地图

站点地图一般是一个XML文档(也有txt格式),节点结构也非常简单,作用是包含网站中所有的链接(希望被抓取的链接),一般交给爬虫去处理.

一个站点地图的一半url是这样的:

https://phpreturn.com/sitemap.xml

一个站点地图的基本格式是这样的:

<urlset xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd">
<url>
<loc>https://phpreturn.com</loc>
<changefreq>always</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://phpreturn.com/index/a620760e8a5342.html</loc>
<lastmod>2022-02-12T15:30:36+08:00</lastmod>
<changefreq>yearly</changefreq>
<priority>0.9</priority>
</url>
</urlset>

站点地图的知识并不复杂,我们可以很容易的在网上找到教程.

一个站点地图的数据内容是非常简单的,我们既可以使用DOM扩展去生成,也可以用字符串拼接的方式去做,再高级一点的使用模板渲染的技术去做.但是这样的方法要么写起来很麻烦,要么代码可读性不高,或者实现的过于麻烦.

实际上有这样一个扩展库,可以简单地实现一个标准的站点地图,就是thepixeldeveloper/sitemap:

基本的使用

<?php declare(strict_types=1);

use Thepixeldeveloper\Sitemap\Urlset;
use Thepixeldeveloper\Sitemap\Url;
use Thepixeldeveloper\Sitemap\Drivers\XmlWriterDriver;

$url = new Url($loc);
$url->setLastMod($lastMod);
$url->setChangeFreq($changeFreq);
$url->setPriority($priority);

$urlset = new Urlset();
$urlset->add($url);

$driver = new XmlWriterDriver();
$urlset->accept($driver);

echo $driver->output();

我们可以在上面的代码案例中发现,整个用法是非常简单地,可读性也非常高.

站点地图扩展的用法

一般的我们也可以在站点地图中指定页面主要内容是什么类型的,比如说:图片/普通的链接/新闻/手机端/视频.分别都支持更多的属性设置,这些都可以直接使用,由它内部处理成最终结果xml.

比如我们增加图片扩展:

<?php declare(strict_types=1);

use Thepixeldeveloper\Sitemap\Urlset;
use Thepixeldeveloper\Sitemap\Url;
use Thepixeldeveloper\Sitemap\Extensions\Image;

$url = new Url($loc);
$url->setLastMod($lastMod);
$url->setChangeFreq($changeFreq);
$url->setPriority($priority);

$image = new Image('https://image-location.com');

$url->addExtension($image);

其他

thepixeldeveloper/sitemap还有一些其他的用法,比如写入注释,引入样式文件的,使用起来也非常简单,值得使用.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值