找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1638|回复: 0

[分享] dedecms5.7 生成百度地图sitemap和谷歌地图sitemap教程

[复制链接]
发表于 2018-6-25 09:31:49 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
因为我的新网站交友吧收录收录的特别慢,之前dede系统用的sitemap是直接用的插件百度新闻…因为看到一篇日志,那个鬼说这样有用,今天仔细查了下,后来发现这个生成的xml现在已经不符合百度sitemap的要求了,而且还是只适用于news.baidu.com这个网站…瞬间感觉无比蛋疼,然后今天就研究了下怎么用dedecms生成正确的sitemap文件
好了 直接看步骤吧.
1.dedecms 生成里面有一个生成地图,原来这个生成的是html,不是我们想要的,而且只生成栏目的,没文章,但是这个界面我们可以方便操作,所以就在这上面来进行修改
2.在/templets/plus 目录下 找到两个文件sitemap.htm 和rssmap.htm,前者我们当中是百度的sitemap 后者我们当中谷歌的sitemap
3.
修改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:global.cfg_basehost/][field:arcurl/]</loc>
  11. <lastmod>[field:pubdate function="GetDateMK(@me)"/]</lastmod>
  12. </url>
  13. {/dede:arclist}
  14. {dede:channelartlist row='50'}
  15. <url>
  16. <loc>{dede:global.cfg_basehost/}{dede:field name='typeurl'/}</loc>
  17. <lastmod>{dede:php}echo date('Y-m-d');{/dede:php}</lastmod>
  18. </url>
  19. {dede:channel type='son' row='8'}
  20. <url>
  21. <loc>[field:global.cfg_basehost/][field:typelink/]</loc>
  22. <lastmod>[field:id runphp="yes"]@me=date('Y-m-d');[/field:id]</lastmod>
  23. </url>
  24. {/dede:channel}
  25. {/dede:channelartlist}
  26. </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 typeid='0' }
  4.        <url><loc>[field:global.cfg_basehost/][field:arcurl/]</loc><lastmod>[field:pubdate function="MyDate('Y-m-d',@me)"/]</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url>
  5.       {/dede:arclist}
  6.       {dede:channelartlist row=50}
  7.         <url><loc>[{dede:global.cfg_basehost/}{dede:field name='typeurl'/}]</loc><lastmod>{dede:php}echo date('Y-m-d');{/dede:php}</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url>
  8.            {dede:channel type='son' row='8'}
  9.         <url><loc>[[field:global.cfg_basehost/][field:typelink/]]</loc><lastmod>[field:id runphp="yes"]@me=date('Y-m-d');[/field:id]</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url>
  10.                 {/dede:channel}
  11.         {/dede:channelartlist}
  12. </urlset>
复制代码


大家也可以自行修改条数
4.重点
之前我就是这个地方有问题,一直生成不了数据,后来改了一些方法调用才OK
找到dede后台目录 找到makehtml_map.php 修改
在上面引用文件的时候 加一句 :require_once DEDEINC.”/arc.partview.class.php”;
搜索if($dopost==”site”)
然后把这个判断里面的代码替换掉:
  1. if($dopost==”site”)
  2. {
  3. $murl = $cfg_cmspath.”/sitemap.xml”;
  4. $tmpfile = $cfg_basedir.$cfg_templets_dir.”/plus/sitemap.htm”;
  5. }else
  6. {
  7. $murl = $cfg_cmspath.”/rssmap.xml”;
  8. $tmpfile = $cfg_basedir.$cfg_templets_dir.”/plus/rssmap.htm”;
  9. }
复制代码

(原因: 1.html改为xml 不用多说 格式问题 2.把data去掉了,因为sitemap这样的文件放到根目录效果更好 )
//$dtp = new DedeTagParse();
//$dtp->LoadTemplet($tmpfile);
//$dtp->SaveTo($cfg_basedir.$murl);
把这3句话注释掉
在上面的判断下面加入
  1. $pv = new PartView();
  2. $pv->SetTemplet($tmpfile); //在这里修改你的谷歌地图模板路径,相对于模板目录
  3. $pv->SaveToHtml($cfg_basedir.$murl); //生成文件名,保存在根目录
复制代码


//$pv->Clear();
把这段代码也注释掉

整体代码如下:   
  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. if(empty($dopost))
  16. {
  17.     ShowMsg("参数错误!","-1");
  18.     exit();
  19. }
  20. $isremote = empty($isremote)? 0 : $isremote;
  21. $serviterm=empty($serviterm)? "" : $serviterm;
  22. $sm = new SiteMap();
  23. $maplist = $sm->GetSiteMap($dopost);
  24. if($dopost=="site")
  25. {
  26.     $murl = $cfg_cmspath."/sitemap.xml";
  27.     $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/sitemap.htm";
  28. }
  29. else
  30. {
  31.     $murl = $cfg_cmspath."/rssmap.xml";
  32.     $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/rssmap.htm";
  33. }
  34. //$dtp = new DedeTagParse();
  35. //$dtp->LoadTemplet($tmpfile);
  36. //$dtp->SaveTo($cfg_basedir.$murl);
  37. $pv = new PartView();
  38. $pv->SetTemplet($tmpfile); //在这里修改你的谷歌地图模板路径,相对于模板目录  
  39. $pv->SaveToHtml($cfg_basedir.$murl);   //生成文件名,保存在根目录
  40. if($cfg_remote_site=='Y' && $isremote == 1)
  41. {
  42.     if($serviterm!="")
  43.     {
  44.         list($servurl, $servuser, $servpwd) = explode(',', $serviterm);
  45.         $config=array( 'hostname' => $servurl, 'username' => $servuser,
  46.                    'password' => $servpwd,'debug' => 'TRUE');
  47.     } else {
  48.         $config=array();
  49.     }
  50.     if( $ftp->connect($config) )
  51.     {
  52.         //分析远程文件路径
  53.         $remotefile = $murl;
  54.         $localfile = '..'.$remotefile;
  55.         $remotedir = preg_replace('#[^\/]*\.html#', '', $remotefile);
  56.         $ftp->rmkdir($remotedir);
  57.         if($ftp->upload($localfile, $remotefile, 'acii')) echo "远程发布成功!"."<br />";
  58.     }
  59. }
  60. //$pv->Clear();
  61. echo "<a href='$murl' target='_blank'>成功更新文件: $murl 浏览...</a>";
  62. exit();
复制代码

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-12-23 17:08 , Processed in 0.043673 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表