本文说的地图是网站的XML地图。
版本一
在模板目录制作以下页面,名称:sitemap.xml。
<?xml version="1.0" encoding="UTF-8"?><!--声明xml格式-->
<?xml-stylesheet type="text/xsl" href="sitemap.xsl"?> <!--使用的xml模板,作用是浏览器打开也可以加上css样式让xml显示更好看-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <!--sitemap协议版本-->
<url>
<loc>http://www.baibo8.com/</loc>
<lastmod>{dede:arclist row=1 titlelen=24 orderby=pubdate}[field:pubdate function=strftime('%Y-%m-%d',@me)/]{/dede:arclist}</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
{dede:channel row='23' type='top'}
<url>
<loc>[field:typelink /]</loc>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
{/dede:channel}
{dede:arclist row=2000 orderby=pubdate}
<url>
<loc>[field:arcurl/]</loc>
<lastmod>[field:pubdate function=strftime('%Y-%m-%d',@me)/]</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
{/dede:arclist}
</urlset>
每天更新:
织梦后台-生成-HTML更新-更新主页HTML
选择模板:jncmb/sitemap.xml,主页位置:../sitemap.xml
或者
每日手动执行更新,http://www.yourdomain.com/plus/task.php?client=js
手动写一个计划任务执行文件,将该文件命名为generate_sitemap.php,放在/plus/task目录里,文件的内容如下:
<?php
//定时生成网站地图
require_once(dirname(__FILE__).'/../../include/common.inc.php');
include(DEDEINC."/arc.listview.class.php");
$lv = new ListView();
//解析模板到字符串
$lv->PartView = new PartView($lv->TypeID,false);
$lv->PartView->SetTypeLink($lv->TypeLink);
$lv->PartView->SetTemplet(DEDETEMPLATE.'/jncmb/sitemap.xml');
$html = $lv->PartView->GetResult();
file_put_contents('../../sitemap.xml',$html);
还是出现问题:
访问域名/sitemap.xml是空白网页,而查看源代码是正确的,不知什么原因。
版本二
采用后台单页生成xml地图
1. 在后台核心->频道模型->单页文档管理中,增加一个页面,我们可以称之为XML网站地图,内容如下图所示,点击保存。
2. {style}目录下(默认是templets/default/目录,根据自己的模板路径),创建一个sitemap.xml文件,内容如下:
{dede:php}
echo '<?xml version="1.0" encoding="utf-8"?>'. "\r\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
{/dede:php}
<url> <loc>{dede:global.cfg_basehost/}</loc>
<lastmod> {dede:arclist row=1 titlelen=24 orderby=pubdate} [field:pubdate function=strftime('%Y-%m-%d',@me)/]{/dede:arclist} </lastmod>
<priority>1.0</priority>
</url>
{dede:channel row='23' type='top'}
<url>
<loc>[field:typelink /]</loc>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
{/dede:channel}
{dede:php}
$dsql->SetQuery('select id, typename from arctype where reid=0');
$dsql->Execute(1);
while($row=$dsql->GetArray(1))
{
$dsql->SetQuery('select id, typename from arctype where reid='. $row['id']);
$dsql->Execute(2);
while($row2=$dsql->GetArray(2))
{
$dsql->SetQuery('select * from arctype where reid='.$row2['id']);
$dsql->Execute(3);
while($row3=$dsql->GetObject(3))
{
$typelink = GetTypeUrl($row3->id,MfTypedir($row3->typedir),$row3->isdefault,$row3->defaultname,$row3->ispart,$row3->namerule2,$row3->moresite,$row3->siteurl,$row3->sitepath);
echo "<url>\r\n";
echo ' <loc>http://www.baibo8.com'. $typelink. "</loc>\r\n";
echo ' '. "\r\n";
echo ' '. "\r\n";
echo " </url>";
}
}
}
{/dede:php}
{dede:arclist orderby=pubdate row='10000'}
<url>
<loc>[field:arcurl/]</loc>
<lastmod>[field:pubdate function="GetDateTimeMK(@me)"/]</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
{/dede:arclist}
{dede:sql sql='Select filename, uptime from sgpage where filename != "sitemap.xml" AND filename != "404.html"'}
<url>
<loc>[field:filename/]</loc>
<lastmod>[field:uptime function=strftime('%Y-%m-%d',@me)/]</lastmod>
<changefreq>monthly</changefreq>
<priority>0.4</priority>
</url>
{/dede:sql}
</urlset>
到此,以上两种方法都能实现网站的xml地图制作,访问自己的域名查看,www.yourdomain.com/sitemap.xml。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫