在我们做业务开发的时候,一般不会去做一个站点地图的功能,但是对于一个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还有一些其他的用法,比如写入注释,引入样式文件的,使用起来也非常简单,值得使用.
原文标题:[thepixeldeveloper/sitemap]轻松省心的为网站生成站点地图
原文地址:https://phpreturn.com/index/a62371bc20d73e.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。