网站地图对于SEO来说是非常重要的,织梦后台是有一个生成“网站地图”的地方,但是实践之后发现并不符合我们SEO的要求,织梦系统自带的网站地图功能太简单,直接生成的sitemap.html里面只有网站栏目列表,没有网站文章列表,这样不利于百度收录,也不利于用户访问,并且sitemap.html生成的位置在data文件夹中,而data文件夹一般情况下为了安全是禁止访问的,所以我们要优化一下织梦的网站地图功能,下面附上教程。

sitemap.html完成效果

sitemap.html完成效果

sitemap.xml完成效果

sitemap.xml完成效果

首先我们打开/dede/makehtml_map.php(默认为dede目录,如已经更改后台目录请自行找到该文件)。

在该文件搜索

if($dopost=="site")
{
    $murl = $cfg_cmspath."/data/sitemap.html";
    $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/sitemap.htm";
}
else
{
    $murl = $cfg_cmspath."/data/rssmap.html";
    $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/rssmap.htm";
}

将这部分改成

if($dopost=="site")
{
    $murl = $cfg_cmspath."/sitemap.html";
    $tmpfile = $cfg_basedir.$cfg_templets_dir."/".$cfg_df_style."/sitemap.htm";
}
else
{
    $murl = $cfg_cmspath."/sitemap.xml";
    $tmpfile = $cfg_basedir.$cfg_templets_dir."/".$cfg_df_style."/xml.htm";
}

以上修改是让织梦生成的网站地图在网站根目录,地图后缀名为html和xml,并且让织梦的网站地图模板位于后台设置的模板目录,模板文件名为sitemap.htm与xml.htm(原来网站地图模板的路径是固定在/plus/目录中的)。

织梦的网站地图是不能解析织梦的相关调用标签,我们需要稍作修改,让他实现调用任意标签。这里也是修改上面所提到的makehtml_map.php文件。

(1)把

require_once(DEDEINC."/dedetag.class.php");

改成

require_once(DEDEINC."/arc.partview.class.php");

(2)把

$dtp = new DedeTagParse();
$dtp->LoadTemplet($tmpfile);
$dtp->SaveTo($cfg_basedir.$murl);

改成

$dtp = new PartView();
$GLOBALS['_arclistEnv'] = 'index';
$dtp->SetTemplet($tmpfile);
$dtp->SaveToHtml($cfg_basedir.$murl);

(3)把

$dtp->Clear();

注释掉

//$dtp->Clear();

现在织梦网站地图就可以解析相关的调用标签了

现在我们在自己网站的模板目录新建两个模板文件,分别是sitemap.htmxml.htm开始试试吧(模板使用标签跟做织梦普通的模板是一样的)。

最后,生成网站地图,普通地图为html格式,RSS地图是xml格式(如果链接够多的话会出现卡几秒的情况,等待一下即可)。

后台更新截图

后台更新截图

最后附上我修改过之后的makehtml_map.php还有模板文件sitemap.htm和xml.htm的下载链接。大家可以对比学习一下,当然如果你的makehtml_map.php文件在这之前没有修改过的话可以直接覆盖使用,模板文件sitemap.htm和xml.htm就需要按自己的网站情况来修改定制了。

注:该教程在织梦V5.7SP2正式版的基础下编写,是否适用其他版本请自行测试

附:教程修改文件下载链接https://pan.baidu.com/s/1XghxmNHjRy8J7tgjQ2Re3A  提取码:fhjo