自动生成sitemap的PHP代码很多,但是真正抽象出来可以复用的,却很少看见。
这里整理的一段代码,可以直接放在任意项目中使用。
$thread = DB::fetch_all("SELECT * FROM ".DB::table('forum_thread')." ORDER BY tid DESC");
// 创建一个DOMDocument对象
$dom = new DOMDocument("1.0","utf-8");
header("Content-Type: text/xml");
// 创建根节点
$root = $dom->createElement("urlset");
$dom->appendChild($root);
foreach($thread as $value){
// 建立根下子节点track
$track = $dom->createElement("url");
$root->appendChild($track);
// 建立track节点下元素
$loc = $dom->createElement("loc");
$track->appendChild($loc);
$priority = $dom->createElement("priority");
$track->appendChild($priority);
$lastmod = $dom->createElement("lastmod");
$track->appendChild($lastmod);
$changefreq = $dom->createElement("changefreq");
$track->appendChild($changefreq);
// 赋值
$text = $dom->createTextNode('http://localhost/thread-'.$value[tid].'-1-1.html');
$loc->appendChild($text);
$date = date("Y-m-d",time());
$text = $dom->createTextNode($date);
$lastmod->appendChild($text);
$text = $dom->createTextNode(daily);
$changefreq->appendChild($text);
$text = $dom->createTextNode(0.8);
$priority->appendChild($text);
}
//生成xml文件
$dom->save("sitemap.xml");exit;
顺便普及一下常识:sitemap是一段xml代码,用来表示网站有哪些内容,以方便搜索引擎快速了解并抓取网站。可以参考:
http://yanyubao.tseo.cn/saasdocs/xmlsitemap.xml
另外一方面,也不是每个网站都需要设置站点地图的,例如左侧功能导航做得非常好的网站,搜索引擎已进入就能够自动快速分析出网站的主要架构,对SEO非常友好。但这里例外的,是左侧的功能导航使用iframe来做的,会让搜索引擎不知道所以然。
当站点中有多个sitemap的时候,需要在robots.txt中说明,这样搜索引擎才知道,撰写的格式为:
Sitemap: http://yanyubao.tseo.cn/saasdocs/xmlsitemap.xml
Sitemap: http://yanyubao.tseo.cn/saasdocs/xmlsitemap02.xml
希望以上知识点对大家有帮助。