很多小伙伴在使用dede系统生成sitemap时,都是在外部用工具生成的sitemapml,然后在上传根目录再到站长平台去提交。
今天老九就教大家直接在dede系统内部生成sitemap.xml,免去使用工具生成和上传的步骤,不清楚的小伙伴请好好学习吧。
我们先修改织梦自带的网站地图生成路径。
首先我们先找到根目录下dede文件中的 makehtml_map.php文件,用编辑软件打开找到$cfg_cmspath.”/data/sitemap.html”; 和$cfg_cmspath.”/data/rssmap.html”; 把/data去掉,改成 $cfg_cmspath.”/sitemap.xml”;和$cfg_cmspath.”/rssmap.html”;
然后,再将根目录下include文件中的arc.rssview.class.php里$murl = $GLOBALS[‘cfg_cmspath’].”/data/rss/”.$this->TypeID.”.xml”;中的/data去掉,改成 $murl = $GLOBALS[‘cfg_cmspath’].”/rss/”.$this->TypeID.”.xml”;
随后,将根目录下include文件中的 sitemap.class.php里的$typelink = $GLOBALS[‘cfg_cmsurl’].”/data/rss/”.$row->id.”.xml”;和$typelink = $GLOBALS[‘cfg_cmsurl’].”/data/rss/”.$row->id.”.xml”;的/data也去掉,改成$typelink = $GLOBALS[‘cfg_cmsurl’].”/rss/”.$row->id.”.xml”; 和$typelink = $GLOBALS[‘cfg_cmsurl’].”/data/rss/”.$row->id.”.xml”;
到了这里网站的地图跟sitemap.xml的生成路劲就改好了,接下来我们想要修改网站地图获取文章列表支持标签调用,因为织梦的网站地图所调用的标签很有限,所以不能使用织梦的很多标签,列如:
{dede:arclist titlelen=25 row=’25’}
<a href=”[field:arcurl/]”>[field:title/]</a>
{/dede:arclist}
就不能解析出列表。
现在仿照首页的方法,使用arc.partview.class.php,这是一个视图类,可以解析这些标签。
首先返回根目录dede文件找到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();
这样就可以解析dedecms所有的标签了,包括文章列表标签。
最后我们需要修改sitemap.xml的模板,在根目录templets文件中的plus文件,找到sitemap.htm,用编辑软件打开复制以下代码覆盖原有的代码后保存。
<?xml version='1.0' encoding='UTF-8'?>
<urlset>
<url>
<loc><![CDATA[https://www.l9ll.cn]]></loc>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
{dede:channel row='23' type='top'}
<url>
<loc><![CDATA[https://www.l9ll.cn[field:typelink/]]]></loc>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
{/dede:channel}
{dede:arclist row=2000 orderby=pubdate}
<url>
<loc><![CDATA[https://www.l9ll.cn[field:arcurl/]]]></loc>
<lastmod>[field:pubdate function=strftime('%Y-%m-%d',@me)/]</lastmod>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
{/dede:arclist}
</urlset>
到了这里,织梦后台更新 sitemap.xml 的网站蜘蛛地图算建好了,我们只要打开织梦自带的更新网站地图,就可以生成 sitemap.xml 网站蜘蛛地图了,如下图
