discuz是一套稳定成熟的论坛系统,但是为了SEO方便,很多时候需要生成sitemap网站地图,可惜discuz没有原生提供这一功能,很多插件也不是很自由,关键有的还收费!
其实sitemap很简单,直接罗列文章内容页和帖子内容页的页面地址就可以了,TXT格式一行一个不拖泥带水,XML格式的反而不美。所以,直接生成一行一个的网站地图最简单高效。话不多说,代码如下:
<?php define('APPTYPEID', 1); define('CURSCRIPT', 'sitemap'); require './source/class/class_core.php'; $discuz = & discuz_core::instance(); $discuz->cachelist = $cachelist; $discuz->init(); $querys = DB::query("SELECT aid FROM ".DB::table('portal_article_title').' ORDER BY aid DESC'); $data = ''; while($articleaid = DB::fetch($querys)) { $aurl = "{$_G[siteurl]}article-{$articleaid['aid']}-1.html"; echo $aurl; $data = $data.$aurl."\n"; echo "<br/>"; } echo "<br/>"; $querys = DB::query("SELECT tid FROM ".DB::table('forum_thread').' WHERE displayorder=0 ORDER BY tid DESC'); while($threadfid = DB::fetch($querys)) { $furl = "{$_G[siteurl]}thread-{$threadfid['tid']}-1-1.html"; echo $furl; $data = $data.$furl."\n"; echo "<br/>"; } $fp = fopen('sitemap.txt',"w+"); fwrite($fp,$data); fclose($fp); ?>
说明一下,上面生成的页面是伪静态的地址,没有使用伪静态的朋友可以把格式改成动态的就OK了。