【推荐】dedecms5.7如何生成百度站点地图sitemap和谷歌站点地图rssmap

网站收录很慢?先看看网站的站点地图sitemap有没有问题!本文介绍通过修改dedecms代码生成百度sitemap和谷歌sitemap,大大提升网站的收录!

由于dedecms自带的站点地图不符合规范,最近两天开始升级dedecms v5.7百度结构化数据模块(现已更名为百度站内搜索)。

可是,升级完后点击“绑定站点ID”提示“无法校验本地密钥”!如图:

绑定站点ID提示无法校验本地密钥
绑定站点ID提示无法校验本地密钥

本来官方升级插件模块是好事,可每次更新总提心吊胆!立马上织梦官方论坛,发现原来很多站长都遇到了这个问题。截至目前织梦官方没有给出明确的解决办法!(这点和DISCUZ论坛程序相比,确实让人汗颜!)

sitemap站点地图是站长的命根子!站长须自力!下面介绍第二种稳妥的方法。

 

一、登录站点FTP,打开目录/templets/plus,分别找到两个文件sitemap.htm(百度)、rssmap.htm(谷歌)并打开。(这两个文件之前由dedecms后台生成)

二、替换sitemap.htm文件里的代码为:

  1. <?xml version="1.0" encoding="{dede:global.cfg_soft_lang /}"?> 
  2. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">  
  3. <url> 
  4. <loc>{dede:global.cfg_basehost/}</loc> 
  5. <changefreq>always</changefreq>  
  6. <priority>1.0</priority> 
  7. </url> 
  8. {dede:arclist row='10000' orderby='pubdate'
  9. <url> 
  10. <loc>[field:arcurl/]</loc>  
  11. <lastmod>[field:pubdate function="GetDateMK(@me)"/]</lastmod> 
  12. </url> 
  13. {/dede:arclist}{dede:channelartlist row='50'
  14. <url> 
  15. <loc>{dede:field name='typeurl'/}</loc> 
  16. <lastmod>{dede:php}echo date('Y-m-d');{/dede:php}</lastmod> 
  17. </url> 
  18. {dede:channel type='son' row='8'
  19. <url> 
  20. <loc>[field:typelink/]</loc> 
  21. <lastmod>[field:id runphp="yes"]@me=date('Y-m-d');[/field:id]</lastmod> 
  22. </url> 
  23. {/dede:channel} 
  24. {/dede:channelartlist} 
  25. </urlset> 

三、替换rssmap.htm文件里的代码为:

  1. <?xml version='1.0' encoding='UTF-8'?> 
  2. <urlset xmlns='http://www.google.com/schemas/sitemap/0.84'> 
  3. {dede:arclist row='10000' orderby='pubdate'}  
  4. <url> 
  5. <loc>[field:arcurl/]</loc> 
  6. <lastmod>[field:pubdate function="MyDate('Y-m-d',@me)"/]</lastmod> 
  7. <changefreq>daily</changefreq> 
  8. <priority>1.0</priority> 
  9. </url> 
  10. {/dede:arclist} 
  11. {dede:channelartlist row=50
  12. <url> 
  13. <loc>{dede:field name='typeurl'/}</loc> 
  14. <lastmod>{dede:php}echo date('Y-m-d');{/dede:php}</lastmod> 
  15. <changefreq>daily</changefreq> 
  16. <priority>1.0</priority> 
  17. </url> 
  18. {dede:channel type='son' row='8'
  19. <url> 
  20. <loc>[field:typelink/]</loc> 
  21. <lastmod>[field:id runphp="yes"]@me=date('Y-m-d');[/field:id]</lastmod> 
  22. <changefreq>daily</changefreq> 
  23. <priority>1.0</priority> 
  24. </url> 
  25. {/dede:channel} 
  26. {/dede:channelartlist} 
  27. </urlset> 

(提示:以上代码中的row文章条数可以结合自身网站的情况修改)

四、打开dede后台目录/dede(默认的后台目录),找到makehtml_map.php文件并打开

在大约第14行引用文件路径的地方插入一行代码:

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

在大约第25行找到 if($dopost==”site”)判断语句,将if的代码改成:

  1. if($dopost=="site"
  2.     $murl = $cfg_cmspath."/sitemap.xml"
  3.     $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/sitemap.htm"
  4. else 
  5.     $murl = $cfg_cmspath."/rssmap.xml"
  6.     $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/rssmap.htm"

(不难发现,将变量$murl里的文件后缀.htm改成了.xml,将百度站点地图sitemap和谷歌站点地图rssmap的路径改到了根目录下)

在上面if语句代码的下面,紧接着注释以下三行代码如下(在每行代码的前面加//):

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

在上面被注释的代码下加以下三行新的代码:

  1. $pv = new PartView(); 
  2. $pv->SetTemplet($tmpfile); //模板路径,相对于模板目录 
  3. $pv->SaveToHtml($cfg_basedir.$murl); //生成文件名,保存在根目录 

找到$dtp->Clear();注释掉,如下:

  1. //$dtp->Clear(); 

至此,makehtml_map.php文件修改完毕!最终完整的代码如下:

  1. <?php 
  2. /** 
  3.  * 生成网站地图 
  4.  * 
  5.  * @version        $Id: makehtml_map.php 1 11:17 2010年7月19日Z tianya $ 
  6.  * @package        DedeCMS.Administrator 
  7.  * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc. 
  8.  * @license        http://help.dedecms.com/usersguide/license.html 
  9.  * @link           http://www.dedecms.com 
  10.  */ 
  11. require_once(dirname(__FILE__)."/config.php"); 
  12. require_once(DEDEINC."/sitemap.class.php"); 
  13. require_once(DEDEINC."/dedetag.class.php"); 
  14. require_once(DEDEINC."/arc.partview.class.php"); 
  15.  
  16. if(emptyempty($dopost)) 
  17.     ShowMsg("参数错误!","-1"); 
  18.     exit(); 
  19. $isremote = emptyempty($isremote)? 0 : $isremote
  20. $serviterm=emptyempty($serviterm)? "" : $serviterm
  21. $sm = new SiteMap(); 
  22. $maplist = $sm->GetSiteMap($dopost); 
  23. if($dopost=="site"
  24.     $murl = $cfg_cmspath."/sitemap.xml"
  25.     $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/sitemap.htm"
  26. else 
  27.     $murl = $cfg_cmspath."/rssmap.xml"
  28.     $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/rssmap.htm"
  29. //$dtp = new DedeTagParse(); 
  30. //$dtp->LoadTemplet($tmpfile); 
  31. //$dtp->SaveTo($cfg_basedir.$murl); 
  32. $pv = new PartView(); 
  33. $pv->SetTemplet($tmpfile); //模板路径,相对于模板目录 
  34. $pv->SaveToHtml($cfg_basedir.$murl); //生成文件名,保存在根目录 
  35. if($cfg_remote_site=='Y' && $isremote == 1) 
  36.     if($serviterm!=""
  37.     { 
  38.         list($servurl$servuser$servpwd) = explode(','$serviterm); 
  39.         $config=array'hostname' => $servurl'username' => $servuser,  
  40.                    'password' => $servpwd,'debug' => 'TRUE'); 
  41.     } else { 
  42.         $config=array(); 
  43.     } 
  44.     if$ftp->connect($config) ) 
  45.     { 
  46.         //分析远程文件路径 
  47.         $remotefile = $murl
  48.         $localfile = '..'.$remotefile
  49.         $remotedir = preg_replace('#[^\/]*\.html#'''$remotefile); 
  50.         $ftp->rmkdir($remotedir); 
  51.         if($ftp->upload($localfile$remotefile'acii')) echo "远程发布成功!"."<br />"
  52.     } 
  53. //$dtp->Clear(); 
  54. echo "<a href='$murl' target='_blank'>成功更新文件: $murl 浏览...</a>"
  55. exit(); 

登录dedecms v5.7后台,点击“生成”-“更新网站地图”,分别选择地图类型里的“普通地图”和“RSS地图”开始更新。

最终效果:

http://www.exp99.com/sitemap.xml (百度站点地图)

http://www.exp99.com/rssmap.xml (谷歌站点地图)

 

相关经验

导读书签
书签初始化中…