如何给PHPWind论坛增加标准xml格式sitemap网站地图

使用Phpwind的架设了网站之后,我们会发现论坛根目录有个Sitemap.php,但是从浏览器打开这个网址之后,发现其格式并不是我们网站常用的标准xml网站地图的格式,如图:

看其遵循的协议是百度的bbs_sitemap.xsd,也就是百度的论坛地图协议,并不是标准的xml网站地图协议。

当然百度的论坛地图协议固然能给百度抓取论坛数据有好处,但是没有标准的xml格式的sitemap,对于其他的搜索引擎却没有什么好处。而且现在百度站长和Google站长工具都有网站地图提交的功能,其提交的网站地图是需要遵循sitemap.org的标准xml网站地图协议的。

其实我们可以根据这个文件改造一个标准的网站地图。

首先将sitemap.php复制一个,重命名为sitemapxml.php(这个名字可以随意设置),然后编辑刚才复制的这个sitemapxml.php文件,将其内容修改为:

require_once('global.php');
@header("Content-type: application/xml");
//* @include_once pwCache::getPath(D_P.'data/bbscache/sm_config.php');
pwCache::getData(D_P.'data/bbscache/sm_config.php');
!$sm_updatePeri && $sm_updatePeri = 12;

if ($timestamp-pwFilemtime($cachefile)>=$sm_updatePeri*3600) {
$sm_num < 1 && $sm_num = 1000;
if ($db_tlist) {
$rt = $db->get_one("SELECT MAX(tid) AS mtid FROM pw_threads");
$pw_tmsgs = GetTtable($rt['mtid']);
} else {
$pw_tmsgs = 'pw_tmsgs';
}
$fidoff = array('0');
$query = $db->query("SELECT fid,allowvisit,password,f_type,forumsell FROM pw_forums WHERE type<>'category'");
while ($rt = $db->fetch_array($query)) {
if ($rt['f_type'] == 'hidden' || $rt['password'] || $rt['forumsell'] || $rt['allowvisit']) {
$fidoff[] = $rt['fid'];
}
}
$sql = $fidoff ? ' fid NOT IN(' . S::sqlImplode($fidoff) . ')' : '1';
$query = $db->query("SELECT t.tid,t.fid,t.subject,t.postdate,t.lastpost,t.hits,t.replies,t.digest,tm.content FROM pw_threads t FORCE INDEX (".getForceIndex('idx_postdate').") LEFT JOIN $pw_tmsgs tm ON t.tid=tm.tid WHERE $sql ORDER BY t.postdate DESC LIMIT $sm_num");
while ($rt = $db->fetch_array($query)) {
$link = "$db_bbsurl/read{$db_dir}tid-{$rt['tid']}$db_ext";
$mapinfo .= "\t<url>\r\n\t\t<loc>$link</loc>\r\n\t\t<lastmod>".get_date($rt['lastpost'])."</lastmod>\r\n\t\t<changefreq>daily</changefreq>\r\n\t\t<priority>0.5</priority>\r\n\t</url>\r\n";
}

$db_charset == 'gbk' && $db_charset = 'GB2312';
$mapinfo = "<?xml version =\"1.0\" encoding=\"{$db_charset}\"?>\r\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n\t".$mapinfo."</urlset>";
pwCache::writeover($cachefile,$mapinfo);
echo $mapinfo;
} else {
readfile($cachefile);
}

然后上传到网站空间,输入一下这个文件的地址吧,看看是不是变成了标准的sitemap网站地图了!这时候可以在robots.txt文件中标注上刚才修改的sitemap文件的地址:

sitemap: /sitemapxml.php

还可以通过百度站长平台和Google站长工具去提交这个网站地图。

“如何给PHPWind论坛增加标准xml格式sitemap网站地图”的8个回复

  1. 这个XML有点缺陷就是时间格式不对,谷歌只要求年月日,而这个代码生成的时间是年月日时分,多了小时分钟,谷歌提示警告有错。望赐教…

    1. @ylxnx: 你提交的是BBS格式的吧,如果提交修改之后的网站地图,那么Google就不会提示错误了。我的站谷歌提示正常。

  2. 您好,我也有上面的问题,谷歌要求的格式是YYYY-MM-DD,照上面做出来的是2011-12-16 23:00
    上面的回答也没有看明白,您能再帮我看看吗,谢谢

    1. @cd: 明白什么意思了,谷歌即便是提示日期格式错误,也能正确抓取的,后期我再看看如何把时间去掉。

评论已关闭。