很多刚用帝国CMS建站的朋友,都在为怎么弄出个标准的Sitemap.xml文件发愁,或者生成的地图文件打开全是乱码、打不开。这篇东西不整虚的,直接告诉你怎么用最笨但最稳的方法,在帝国系统里做出百度和谷歌都喜欢的网站地图,解决收录难题。

我是做站多年的老李,见过太多新手为了省事去网上下载那种所谓的“一键生成插件”,结果装上后服务器负载直接爆表,网站打开速度慢得像蜗牛,最后还得花冤枉钱请人删插件。其实,帝国CMS本身的功能就足够强大,只要稍微动动手改改模板,就能搞定。咱们今天就来聊聊怎么在帝国系统做网站地图,不用那些花里胡哨的代码,纯手工打造。

首先,你得有个思路。Sitemap.xml本质上就是个文本文件,里面列出了你网站所有重要页面的链接。帝国CMS的数据都在数据库里,我们要做的,就是写一段SQL查询语句,把这些链接查出来,然后拼成XML格式。

具体操作分三步走。第一步,新建一个模板。进入帝国后台,找到“模板”->“公共模板变量”或者“其他模板”,新建一个模板,命名为“sitemap”。注意,这个模板的调用标签里,我们要用SQL标签。

第二步,写SQL语句。这是核心。假设你主要想生成内容页的地图,SQL大概长这样:

select id,titleurl,title from phome_ecms_news where newstime > unix_timestamp(date_sub(now(), interval 30 day)) order by newstime desc

这里我查的是最近30天的新闻表数据,表名phome_ecms_news根据你的实际表名修改。如果你还有其他栏目,比如下载、图片,就得再写几条类似的SQL,或者用union all合并起来。别嫌麻烦,这一步虽然繁琐,但是最安全,不会拖慢网站运行速度。

第三步,拼接XML格式。在模板里,先输出XML的头:

然后循环输出刚才查到的数据:

[!--titleurl--]

daily

0.8

最后输出闭合标签:

搞定这些后,保存模板。接下来是关键,怎么让访问者看到的就是这个XML文件,而不是一个普通的HTML页面。你需要在根目录新建一个文件,叫sitemap.php,内容如下:

require('e/class/connect.php');

require('e/class/db_sql.php');

$link=db_connect();

$empire=new mysqlquery();

$templetid=1; // 这里填你刚才新建的模板ID

$templet=$empire->fetch1("select templet from phome_enewstemplate where templetid='$templetid'");

include($public_r['templet'].'/'.$templet);

db_close();

$empire=null;

?>

然后,在后台生成页面时,选择这个模板,生成到sitemap.php。或者,你也可以直接在浏览器访问你的域名/sitemap.php,看看能不能看到正确的XML结构。如果看到一堆乱码,记得检查编码是不是UTF-8,帝国后台设置里也要选UTF-8。

这里有个坑,很多新手生成的地图里,链接带www和不带www混在一起,或者带了参数。一定要确保链接是规范的。我在给一个客户做帝国系统做网站地图优化时,就发现他生成的地图里,有些链接多了个问号,导致百度爬虫抓取报错。后来我加了个过滤条件,只取纯净的URL,问题就解决了。

另外,别只生成内容页的地图。首页、栏目页、标签页也很重要。你可以再建几个类似的模板,分别生成index.xml, category.xml等,或者全部合并到一个sitemap.xml里,按优先级排序。首页优先级设为1.0,栏目页0.8,内容页0.6,这样百度蜘蛛爬取时,就知道先抓谁。

最后,生成完地图,记得去百度搜索资源平台提交一下。别以为生成了就万事大吉,不提交的话,百度可能不知道你的更新。我有个朋友,地图做得很完美,但忘了提交,结果新文章发了半个月都没收录,急得团团转。

总之,在帝国系统做网站地图,不需要依赖第三方插件,自己写代码虽然看起来麻烦,但胜在可控、稳定、速度快。这种笨办法,才是真正能帮你的好办法。如果你按照步骤做,还遇到什么问题,欢迎在评论区留言,咱们一起折腾。记住,建站是个细活,急不得,但也别怕麻烦。