DedeCMS 默认会生成一个简单的 XML 格式的 sitemap,但通常我们需要一个更友好的 HTML 版本,方便用户浏览和搜索引擎抓取,下面我将分为 HTML 版本 和 XML 版本 两种来讲解,并提供完整的代码和制作步骤。

(图片来源网络,侵删)
HTML 版本网站地图(面向用户和搜索引擎)
这是最常见的一种,通常命名为 sitemap.html,放在网站根目录,它清晰地列出了网站的栏目、文章和单页,方便用户导航。
第 1 步:创建模板文件
- 在你的 DedeCMS 安装目录下,找到
/templets/文件夹。 - 在
/templets/文件夹内新建一个文件,命名为sitemap.htm。 - 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开
sitemap.htm文件,将下面的代码复制进去。
/templets/sitemap.htm 完整代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">网站地图 - {dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:global.cfg_webname/}网站地图,包含所有栏目和文章列表,方便您快速找到所需内容。" />
<meta name="keywords" content="网站地图,sitemap,{dede:global.cfg_webname/}" />
<meta name="author" content="{dede:global.cfg_webname/}" />
<style>
body { font-family: 'Microsoft YaHei', Arial, sans-serif; line-height: 1.6; margin: 0; padding: 20px; background-color: #f4f4f4; color: #333; }
.container { max-width: 1200px; margin: 0 auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
h1 { text-align: center; color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
h2 { color: #34495e; margin-top: 30px; }
.section { margin-bottom: 30px; }
.section ul { list-style: none; padding-left: 20px; }
.section ul li { margin-bottom: 8px; }
.section ul li a { text-decoration: none; color: #3498db; transition: color 0.3s; }
.section ul li a:hover { color: #e74c3c; text-decoration: underline; }
.footer { text-align: center; margin-top: 40px; padding-top: 20px; border-top: 1px solid #eee; color: #777; font-size: 0.9em; }
</style>
</head>
<body>
<div class="container">
<h1>网站地图 - {dede:global.cfg_webname/}</h1>
<!-- 单页文档部分 -->
<div class="section">
<h2>单页文档</h2>
{dede:sql sql="SELECT * FROM dede_arctype WHERE topid=0 AND ishidden<>1 ORDER BY sortrank"}
<ul>
<li><a href="[field:typedir/]">[field:typename/]</a></li>
</ul>
{/dede:sql}
</div>
<!-- 栏目及文章部分 -->
<div class="section">
<h2>栏目及文章列表</h2>
{dede:channelartlist row='100' typeid='0'}
<h3>{dede:field name='typename'/}</h3>
<ul>
{dede:sql sql="SELECT * FROM dede_archives WHERE typeid=~id~ AND arcrank > -1 ORDER BY pubdate DESC"}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:sql}
</ul>
{/dede:channelartlist}
</div>
<div class="footer">
<p>本地图由 <a href="{dede:global.cfg_cmsurl/}">{dede:global.cfg_webname/}</a> 自动生成。</p>
<p>© {dede:php}echo date('Y');{/dede:php} {dede:global.cfg_webname/} All Rights Reserved.</p>
</div>
</div>
</body>
</html>
第 2 步:代码解析
- HTML 结构:标准的 HTML5 结构,包含
head和body。head中设置了页面标题、描述、关键词,并内嵌了一些 CSS 样式,让页面看起来更美观。 - 单页文档:
{dede:sql sql="SELECT * FROM dede_arctype WHERE topid=0 AND ishidden<>1 ORDER BY sortrank"}这句 SQL 查询了顶级栏目(
topid=0)并且没有隐藏(ishidden<>1)的栏目,这些通常被用作“关于我们”、“联系方式”等单页。 - 栏目及文章列表:
{dede:channelartlist row='100' typeid='0'} <h3>{dede:field name='typename'/}</h3> <ul> {dede:sql sql="SELECT * FROM dede_archives WHERE typeid=~id~ AND arcrank > -1 ORDER BY pubdate DESC"} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:sql} </ul> {/dede:channelartlist}channelartlist:循环获取顶级栏目(typeid='0'),row='100'限制最大数量。~id~:这是channelartlist的一个特殊用法,代表当前循环的栏目 ID。dede_archives:DedeCMS 存储文章的表。arcrank > -1:这个条件很重要,它排除了所有被设置为“仅动态”、“草稿”或“待审核”的文章(arcrank为负数),只显示正常发布的文章。[field:arcurl/]和[field:title/]:分别调用文章的链接和标题。
第 3 步:生成静态页面
- 登录你的 DedeCMS 后台。
- 进入 “生成” -> “HTML更新”。
- 在页面左侧找到 “HTML地图” 选项。
- 点击 “开始生成HTML地图”。
- 系统会提示生成成功,你可以在网站根目录下找到
sitemap.html文件。
XML 版本网站地图(仅面向搜索引擎)
XML Sitemap 是一种标准的格式,专门为搜索引擎(如 Google, Bing)设计,告诉它们网站有哪些页面以及它们的更新频率和重要性。

(图片来源网络,侵删)
第 1 步:创建模板文件
- 同样在
/templets/文件夹内新建一个文件,命名为sitemap.xml。 - 打开
sitemap.xml文件,复制以下代码。
/templets/sitemap.xml 完整代码:
{dede:global.cfg_cmsurl/}
{dede:sql sql="SELECT id,typedir FROM dede_arctype WHERE topid=0 AND ishidden<>1"}
<url>
<loc>[field:typedir/]</loc>
<lastmod>{dede:php}echo date('Y-m-d');{/dede:php}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
{/dede:sql}
{dede:channelartlist row='100' typeid='0'}
{dede:sql sql="SELECT id,typedir FROM dede_arctype WHERE topid=~id~ AND ishidden<>1"}
<url>
<loc>[field:typedir/]</loc>
<lastmod>{dede:php}echo date('Y-m-d');{/dede:php}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
{/dede:sql}
{dede:sql sql="SELECT id,arc,title FROM dede_archives WHERE typeid=~id~ AND arcrank > -1 ORDER BY pubdate DESC"}
<url>
<loc>[field:arcurl/]</loc>
<lastmod>[field:pubdate function="MyDate('Y-m-d', @me)"/]</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
{/dede:sql}
{/dede:channelartlist}
第 2 步:代码解析
- XML 声明:文件开头必须有
<?xml version="1.0" encoding="UTF-8"?>。注意:在 DedeCMS 模板中,<?php ... ?>标签可能会被系统过滤,所以需要使用{dede:php} ... {/dede:php}标签来执行 PHP 代码,上面的代码中,lastmod日期就是用这种方式动态生成的。 <urlset>:标准的 Sitemap 应该包含<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">,但 DedeCMS 的模板引擎在生成时会自动处理,所以这里可以省略,最终生成的文件会包含它。- 栏目 URL:分别查询顶级栏目和二级栏目,并为每个栏目生成一个
<url>条目。 - 文章 URL:在
channelartlist循环内部,查询每个栏目下的所有文章,并为每篇文章生成一个<url>条目。 - 标签说明:
<loc>:页面的绝对 URL。<lastmod>:页面的最后修改日期。<changefreq>:页面的更新频率(如always,hourly,daily,weekly,monthly,yearly,never),这里只是示例,实际值应根据你的网站更新频率来定。<priority>:页面的相对优先级(0.0 到 1.0),首页通常为 1.0,栏目页次之,文章页再次之。
第 3 步:生成静态页面
- 登录 DedeCMS 后台。
- 进入 “生成” -> “HTML更新”。
- 在页面左侧找到 “HTML地图” 选项。
- 点击 “开始生成HTML地图”。
- 生成后,在网站根目录下找到
sitemap.xml文件。
提交网站地图
生成 sitemap.html 和 sitemap.xml 后,你需要将它们提交给搜索引擎。
-
Google Search Console:
- 登录你的 Google Search Console。
- 选择对应的网站。
- 在左侧菜单中找到 “Sitemaps”(网站地图)。
- 点击 “添加新的网站地图”。
- 输入你的网站地图地址,
https://www.yourdomain.com/sitemap.xml,然后点击 “提交”。
-
Bing Webmaster Tools:
(图片来源网络,侵删)- 过程与 Google 类似,登录 Bing Webmaster Tools,找到“Sitemaps”部分,然后提交你的
sitemap.xml文件。
- 过程与 Google 类似,登录 Bing Webmaster Tools,找到“Sitemaps”部分,然后提交你的
-
Robots.txt 文件:
- 建议在
robots.txt文件中引用你的 XML Sitemap,方便搜索引擎发现,在你的网站根目录下的robots.txt文件中添加一行:Sitemap: https://www.yourdomain.com/sitemap.xml
- 建议在
| 类型 | 文件名 | 位置 | 用途 | 生成方式 |
|---|---|---|---|---|
| HTML 地图 | sitemap.htm |
/templets/ |
面向用户,方便浏览和导航 | 后台“生成” -> “HTML更新” -> “HTML地图” |
| XML 地图 | sitemap.xml |
/templets/ |
面向搜索引擎,提高抓取效率 | 后台“生成” -> “HTML更新” -> “HTML地图” |
通过以上步骤,你就可以为你的 DedeCMS 网站创建一个完整且专业的网站地图了。
