核心概念:使用“自由列表”功能
DedeCMS 没有一个固定的“网站地图模板”文件,而是使用一个非常强大的功能——自由列表,你可以把它理解为一个“动态内容生成器”,它可以根据你设定的规则(如频道模型、栏目、排序方式等)从数据库中抓取内容,并套用你指定的模板文件来生成最终的页面。

第一步:创建自由列表(生成地图数据)
这是制作地图的核心步骤,无论你做 XML 还是 HTML 地图,都需要先创建这个“自由列表”。
-
登录后台:进入您的 DedeCMS 管理后台。
-
找到功能入口:在左侧菜单栏中,找到 【核心】 -> 模型管理】。
-
进入自由列表模型管理页面,点击右上角的 【自由列表】 按钮。
(图片来源网络,侵删) -
配置自由列表参数:
- 列表名称:给您的地图起个名字,
sitemap或网站地图,这个名字只是为了后台识别,不影响最终URL。 - 列表目录:这是地图文件最终存放的目录和文件名。非常重要!
- 如果你想生成
www.yoursite.com/sitemap.html,就填写sitemap.html。 - 如果你想生成
www.yoursite.com/sitemap.xml,就填写sitemap.xml。 - 注意:目录必须存在,并且有写入权限,通常放在网站根目录下即可。
- 如果你想生成
- 列表模板:选择一个模板文件,我们先不选,等第二步创建好模板后再来这里绑定。
- :这是地图的核心数据源。
- 频道类型:选择 “所有栏目”。
- 内容排序:选择 “按发布时间降序” 或 “按ID降序”,确保最新的内容排在前面。
- 其他选项:
- 标题属性:可以留空。
- 分页选项:地图通常不需要分页,这里可以不设置或设置一个很大的数字。
- 列表行数:设置为
0或一个足够大的数字(如100000),确保所有内容都能被列出。
- 附加选项:勾选 “启用”,并选择一个 “自定义列表类型”(
sitemap)。
- 列表名称:给您的地图起个名字,
-
保存:点击页面底部的 “保存” 按钮,系统会根据你的配置生成一个静态文件(
sitemap.html还是默认的,因为我们还没绑定模板。
第二步:创建网站地图模板文件
现在我们来创建两种最常用的地图模板。
模板文件存放位置
请将创建的模板文件上传到您的 DedeCMS 网站目录下的 /templets/default/ 目录中,或者您当前使用的模板目录下(/templets/你的模板名称/)。

HTML 格式网站地图(用户友好)
这种地图方便访客浏览,了解网站的整体结构。
-
创建模板文件:在
/templets/default/目录下新建一个文件,命名为sitemap.html。 -
编写模板代码:将以下代码复制到
sitemap.html文件中。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">{dede:global.cfg_webname/} - 网站地图</title>
<meta name="description" content="{dede:global.cfg_webname/}网站地图,包含所有文章和栏目页面。">
<meta name="keywords" content="{dede:global.cfg_webname/},网站地图">
<link rel="stylesheet" href="/templets/default/style.css"> <!-- 引入你的网站样式,让地图更美观 -->
</head>
<body>
{dede:include filename="head.htm"/} <!-- 引入网站头部 -->
<div class="sitemap-container">
<h1>网站地图</h1>
<p>欢迎来到 <a href="{dede:global.cfg_basehost/}">{dede:global.cfg_webname/}</a> 网站地图,本地图展示了网站的所有栏目和文章,方便您快速找到所需内容。</p>
<!-- 第一部分:所有栏目列表 -->
<h2>所有栏目</h2>
<ul class="channel-list">
{dede:channel type='top' row='100'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
<!-- 第二部分:所有文章列表 (这里只列出最新的100篇作为示例,实际中可以通过自由列表调用更多) -->
<h2>最新文章</h2>
<ul class="article-list">
{dede:arclist row='100' titlelen='50'}
<li><a href="[field:arcurl/]">[field:title/]</a> ([field:pubdate function="MyDate('Y-m-d',@me)"/])</li>
{/dede:arclist}
</ul>
<!-- 第三部分:所有单页文档 (关于我们、联系我们等) -->
<h2>单页文档</h2>
<ul class="page-list">
{dede:channel type='self' row='100'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
</div>
{dede:include filename="footer.htm"/} <!-- 引入网站底部 -->
</body>
</html>
-
绑定模板:
- 回到后台的 【自由列表】 管理页面。
- 找到你刚才创建的那个自由列表(比如叫
网站地图)。 - 点击 “修改”。
- 在 “列表模板” 一栏,选择你刚刚创建的
sitemap.html模板。 - 点击 “保存”。
-
更新生成:点击自由列表管理页面的 “更新” 按钮,系统会重新生成
sitemap.html文件,现在你就可以通过www.yoursite.com/sitemap.html访问你的 HTML 地图了。
XML 格式网站地图(搜索引擎友好)
这种地图是专门为 Google、百度、Bing 等搜索引擎设计的,用于告诉它们网站上有哪些页面可以抓取。
-
创建模板文件:在
/templets/default/目录下新建一个文件,命名为sitemap.xml。 -
编写模板代码:将以下代码复制到
sitemap.xml文件中。
{dede:global.cfg_basehost/}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<!-- 首页 -->
<url>
<loc>{dede:global.cfg_basehost/}/</loc>
<lastmod>{dede:function='strftime("%Y-%m-%d",time())'/}</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<!-- 所有栏目 -->
{dede:channel type='top' row='100'}
<url>
<loc>[field:typelink/]</loc>
<lastmod>{dede:function='strftime("%Y-%m-%d",time())'/}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
{/dede:channel}
<!-- 所有文章列表 (这是最重要的部分) -->
{dede:arclist row='5000' orderby='pubdate' typeid='0'}
<url>
<loc>[field:arcurl/]</loc>
<lastmod>[field:pubdate function="strftime('%Y-%m-%d', @me)"/]</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
{/dede:arclist}
<!-- 所有单页文档 -->
{dede:channel type='self' row='100'}
<url>
<loc>[field:typelink/]</loc>
<lastmod>{dede:function='strftime("%Y-%m-%d",time())'/}</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
{/dede:channel}
</urlset>
代码解释:
loc: 页面的永久链接。lastmod: 页面最后修改的日期,这里为了简化,栏目和单页都用了当前日期,文章则用了文章的发布日期。changefreq: 页面更新频率(如always,hourly,daily,weekly,monthly,yearly,never)。priority: 页面在网站中的重要性(0.0 到 1.0 之间,1.0 为最高)。
-
绑定模板:
- 回到后台的 【自由列表】 管理页面。
- 新建一个自由列表,列表目录 填写
sitemap.xml。 - 在 “列表模板” 一栏,选择你刚刚创建的
sitemap.xml模板。 - 其他配置和之前一样, 选择“所有栏目”,列表行数 设置为
0。 - 点击 “保存”。
-
更新生成:点击新创建的自由列表的 “更新” 按钮。
sitemap.xml文件就生成了,你可以通过www.yoursite.com/sitemap.xml访问它,并用浏览器打开查看格式是否正确。
第三步:自动化更新地图
每天都在更新,手动更新地图很麻烦,我们可以利用 DedeCMS 的 “发布任务” 功能实现自动化。
- 登录后台:进入 【系统】 -> 【计划任务】 -> 【任务计划】。
- 添加新任务:
- 任务名称:
自动更新网站地图 - 执行时间:选择一个你希望的频率,
每天,并设置一个具体时间(如凌晨 2 点)。 - 执行程序:选择
自由列表。 - 任务文件:选择你之前创建的自由列表(无论是 HTML 地图还是 XML 地图)。
- 附加参数:留空。
- 开启任务:勾选 “开启”。
- 任务名称:
- 保存:点击 “增加” 或 “保存”。
这样,每天到了设定的时间,系统就会自动执行更新命令,让你的网站地图始终保持最新。
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 创建自由列表 | 在后台【核心】->【内容模型管理】->【自由列表】中创建,并设置好列表目录(如 sitemap.xml)。 |
| 2 | 创建模板文件 | 在 /templets/default/ 目录下创建 .html 或 .xml 文件,并填入对应的模板代码。 |
| 3 | 绑定模板 | 回到自由列表管理页面,将你创建的模板文件绑定到对应的自由列表上。 |
| 4 | 生成/更新 | 点击自由列表的 “更新” 按钮,生成第一版地图。 |
| 5 | 自动化(推荐) | 在【系统】->【计划任务】中设置一个定时任务,让地图自动更新。 |
通过以上步骤,你就可以轻松地为你的 DedeCMS 网站创建出功能完善、对搜索引擎友好的网站地图了。
