|
因为我的新网站交友吧收录收录的特别慢,之前dede系统用的sitemap是直接用的插件百度新闻…因为看到一篇日志,那个鬼说这样有用,今天仔细查了下,后来发现这个生成的xml现在已经不符合百度sitemap的要求了,而且还是只适用于news.baidu.com这个网站…瞬间感觉无比蛋疼,然后今天就研究了下怎么用dedecms生成正确的sitemap文件
好了 直接看步骤吧.
1.dedecms 生成里面有一个生成地图,原来这个生成的是html,不是我们想要的,而且只生成栏目的,没文章,但是这个界面我们可以方便操作,所以就在这上面来进行修改
2.在/templets/plus 目录下 找到两个文件sitemap.htm 和rssmap.htm,前者我们当中是百度的sitemap 后者我们当中谷歌的sitemap
3.
修改sitemap.htm :把原来的代码全部删除 然后用下面的代码
- <?xml version="1.0" encoding="{dede:global.cfg_soft_lang /}"?>
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
- <url>
- <loc>{dede:global.cfg_basehost/}</loc>
- <changefreq>always</changefreq>
- <priority>1.0</priority>
- </url>
- {dede:arclist row='10000' orderby='pubdate'}
- <url>
- <loc>[field:global.cfg_basehost/][field:arcurl/]</loc>
- <lastmod>[field:pubdate function="GetDateMK(@me)"/]</lastmod>
- </url>
- {/dede:arclist}
- {dede:channelartlist row='50'}
- <url>
- <loc>{dede:global.cfg_basehost/}{dede:field name='typeurl'/}</loc>
- <lastmod>{dede:php}echo date('Y-m-d');{/dede:php}</lastmod>
- </url>
- {dede:channel type='son' row='8'}
- <url>
- <loc>[field:global.cfg_basehost/][field:typelink/]</loc>
- <lastmod>[field:id runphp="yes"]@me=date('Y-m-d');[/field:id]</lastmod>
- </url>
- {/dede:channel}
- {/dede:channelartlist}
- </urlset>
复制代码
修改rssmap.htm:把原来的代码全部删除 然后用下面的代码
- <?xml version='1.0' encoding='UTF-8'?>
- <urlset xmlns='http://www.google.com/schemas/sitemap/0.84'>
- {dede:arclist typeid='0' }
- <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>
- {/dede:arclist}
- {dede:channelartlist row=50}
- <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>
- {dede:channel type='son' row='8'}
- <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>
- {/dede:channel}
- {/dede:channelartlist}
- </urlset>
复制代码
大家也可以自行修改条数
4.重点
之前我就是这个地方有问题,一直生成不了数据,后来改了一些方法调用才OK
找到dede后台目录 找到makehtml_map.php 修改
在上面引用文件的时候 加一句 :require_once DEDEINC.”/arc.partview.class.php”;
搜索if($dopost==”site”)
然后把这个判断里面的代码替换掉:
- if($dopost==”site”)
- {
- $murl = $cfg_cmspath.”/sitemap.xml”;
- $tmpfile = $cfg_basedir.$cfg_templets_dir.”/plus/sitemap.htm”;
- }else
- {
- $murl = $cfg_cmspath.”/rssmap.xml”;
- $tmpfile = $cfg_basedir.$cfg_templets_dir.”/plus/rssmap.htm”;
- }
复制代码
(原因: 1.html改为xml 不用多说 格式问题 2.把data去掉了,因为sitemap这样的文件放到根目录效果更好 )
//$dtp = new DedeTagParse();
//$dtp->LoadTemplet($tmpfile);
//$dtp->SaveTo($cfg_basedir.$murl);
把这3句话注释掉
在上面的判断下面加入
- $pv = new PartView();
- $pv->SetTemplet($tmpfile); //在这里修改你的谷歌地图模板路径,相对于模板目录
- $pv->SaveToHtml($cfg_basedir.$murl); //生成文件名,保存在根目录
复制代码
//$pv->Clear();
把这段代码也注释掉
整体代码如下:
- <?php
- /**
- * 生成网站地图
- *
- * @version $Id: makehtml_map.php 1 11:17 2010年7月19日Z tianya $
- * @package DedeCMS.Administrator
- * @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
- * @license http://help.dedecms.com/usersguide/license.html
- * @link http://www.dedecms.com
- */
- require_once(dirname(__FILE__)."/config.php");
- require_once(DEDEINC."/sitemap.class.php");
- require_once(DEDEINC."/dedetag.class.php");
- require_once DEDEINC."/arc.partview.class.php";
-
- if(empty($dopost))
- {
- ShowMsg("参数错误!","-1");
- exit();
- }
- $isremote = empty($isremote)? 0 : $isremote;
- $serviterm=empty($serviterm)? "" : $serviterm;
- $sm = new SiteMap();
- $maplist = $sm->GetSiteMap($dopost);
- if($dopost=="site")
- {
- $murl = $cfg_cmspath."/sitemap.xml";
- $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/sitemap.htm";
- }
- else
- {
- $murl = $cfg_cmspath."/rssmap.xml";
- $tmpfile = $cfg_basedir.$cfg_templets_dir."/plus/rssmap.htm";
- }
- //$dtp = new DedeTagParse();
- //$dtp->LoadTemplet($tmpfile);
- //$dtp->SaveTo($cfg_basedir.$murl);
- $pv = new PartView();
- $pv->SetTemplet($tmpfile); //在这里修改你的谷歌地图模板路径,相对于模板目录
- $pv->SaveToHtml($cfg_basedir.$murl); //生成文件名,保存在根目录
- if($cfg_remote_site=='Y' && $isremote == 1)
- {
- if($serviterm!="")
- {
- list($servurl, $servuser, $servpwd) = explode(',', $serviterm);
- $config=array( 'hostname' => $servurl, 'username' => $servuser,
- 'password' => $servpwd,'debug' => 'TRUE');
- } else {
- $config=array();
- }
- if( $ftp->connect($config) )
- {
- //分析远程文件路径
- $remotefile = $murl;
- $localfile = '..'.$remotefile;
- $remotedir = preg_replace('#[^\/]*\.html#', '', $remotefile);
- $ftp->rmkdir($remotedir);
- if($ftp->upload($localfile, $remotefile, 'acii')) echo "远程发布成功!"."<br />";
- }
- }
- //$pv->Clear();
- echo "<a href='$murl' target='_blank'>成功更新文件: $murl 浏览...</a>";
- exit();
复制代码
|
|