DedeCMS 自带了一个简单的网站地图功能,但通常需要自定义模板才能达到更好的效果,我们将分为两个部分:

- 基础篇:使用 DedeCMS 自带的网站地图功能
- 进阶篇:制作更强大的自定义网站地图模板
基础篇:使用 DedeCMS 自带的网站地图功能
这是最简单快捷的方法,适合快速生成一个基础的 XML 和 HTML 网站地图。
步骤 1:开启网站地图功能
- 登录你的 DedeCMS 后台。
- 进入 “系统” -> “系统基本参数” -> “核心设置”。
- 找到 “是否启用网站地图” 选项,将其设置为 “是”。
- 保存设置。
步骤 2:生成网站地图
- 在后台左侧菜单中找到 “首页” -> “更新主页HTML”。
- 在页面下方,你会看到 “生成网站地图” 的选项。
- 点击 “开始生成”,DedeCMS 会自动生成两个文件:
sitemap.xml:标准的 XML 格式地图,主要提交给搜索引擎(如百度、谷歌)。sitemap.html:HTML 格式的地图,主要方便访客浏览。
步骤 3:提交给搜索引擎
生成后,你需要将 sitemap.xml 的地址提交给各大搜索引擎。
- 百度站长平台:在“站点属性” -> “普通收录” -> “Sitemap” 中提交你的
sitemap.xml地址(https://www.yourdomain.com/sitemap.xml)。 - Google Search Console:在 “Sitemaps” 部分提交你的
sitemap.xml地址。
优点:简单、快速,无需代码。 缺点:功能有限,样式和内容都比较固定,无法高度自定义。
进阶篇:制作更强大的自定义网站地图模板
如果你对地图的样式、内容(如包含栏目、自定义单页、文章标签等)有更高的要求,就需要使用 DedeCMS 的模板功能来自定义地图。

第一步:创建模板文件
在 DedeCMS 的模板目录(通常是 /templets/ 或 /templets/default/)下,创建一个新的文件夹,sitemap,用于存放地图模板,然后在这个文件夹里创建两个文件:
sitemap.xml:用于生成 XML 格式的地图。sitemap.html:用于生成 HTML 格式的地图。
第二步:编写 sitemap.xml 模板代码
这个模板遵循 Sitemap 协议,主要用于搜索引擎,你需要将以下代码保存到 /templets/sitemap/sitemap.xml。
{dede:global.cfg_xmlname/}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<!-- 首页 -->
<url>
<loc>https://www.yourdomain.com/</loc>
<lastmod>{dede:arclist row=1 titlelen='24'}[field:pubdate function='strftime("%Y-%m-%d",@me)'/]{/dede:arclist}</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<!-- 一级栏目 -->
{dede:channel type='top' row='100'}
<url>
<loc>https://www.yourdomain.com[field:typelink/]</loc>
<lastmod>{dede:arclist row=1 typeid='[id]'}[field:pubdate function='strftime("%Y-%m-%d",@me)'/]{/dede:arclist}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
{/dede:channel}
<!-- 二级栏目 (如果需要,可以嵌套 channel 标签) -->
{dede:channel type='son' row='100' typeid='1'} <!-- typeid='1' 指定顶级栏目ID -->
<url>
<loc>https://www.yourdomain.com[field:typelink/]</loc>
<lastmod>{dede:arclist row=1 typeid='[id]'}[field:pubdate function='strftime("%Y-%m-%d",@me)'/]{/dede:arclist}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
{/dede:channel}
<!-- 文章页 (这里只列出最新的一些文章,全量的话会非常巨大,不适合放在XML Sitemap里) -->
{dede:arclist row='500' orderby='pubdate'}
<url>
<loc>https://www.yourdomain.com[field:arcurl/]</loc>
<lastmod>[field:pubdate function='strftime("%Y-%m-%d",@me)'/]</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
{/dede:arclist}
<!-- 自定义单页 (如关于我们、联系我们等) -->
{dede:sql sql="SELECT * FROM dede_arctype WHERE ispart=0 AND channeltype=-1"}
<url>
<loc>https://www.yourdomain.com[field:typedir/]</loc>
<lastmod>{dede:arclist row=1 typeid='[id]'}[field:pubdate function='strftime("%Y-%m-%d",@me)'/]{/dede:arclist}</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
{/dede:sql}
</urlset>
代码解释:
{dede:global.cfg_xmlname/}:获取网站名称。<urlset>:Sitemap 的根标签。<url>:每个页面一个<url><loc>:页面的绝对 URL。<lastmod>:页面的最后更新时间,使用strftime函数格式化。<changefreq>:页面更新频率(如 daily, weekly, monthly)。<priority>:页面权重(0.0 - 1.0)。
注意:XML Sitemap 通常只包含最重要的页面(首页、栏目页、关键文章页),而不是所有文章,否则文件会过大,对于大型网站,建议按栏目生成多个 Sitemap 文件,然后创建一个 Sitemap 索引文件。

第三步:编写 sitemap.html 模板代码
这个模板是给用户看的,所以样式和结构更重要,将以下代码保存到 /templets/sitemap/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/}网站地图,包含所有栏目和文章页面。">
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; margin: 0; padding: 20px; background-color: #f4f4f4; }
.container { max-width: 800px; margin: 0 auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
h1 { color: #333; text-align: center; border-bottom: 2px solid #007bff; padding-bottom: 10px; }
h2 { color: #555; margin-top: 20px; }
ul { list-style-type: none; padding-left: 20px; }
li { margin-bottom: 8px; }
a { color: #007bff; text-decoration: none; }
a:hover { text-decoration: underline; }
.footer { text-align: center; margin-top: 30px; color: #777; font-size: 12px; }
</style>
</head>
<body>
<div class="container">
<h1>网站地图 - {dede:global.cfg_webname/}</h1>
<h2><a href="[field:typelink/]" title="[field:typename/]">首页</a></h2>
<h2>主要栏目</h2>
<ul>
{dede:channel type='top' row='100'}
<li><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
<h2>文章列表</h2>
<ul>
{dede:arclist row='100' titlelen='50' orderby='pubdate'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> ([field:pubdate function='strftime("%Y-%m-%d",@me)'/])</li>
{/dede:arclist}
</ul>
<h2>自定义页面</h2>
<ul>
{dede:sql sql="SELECT * FROM dede_arctype WHERE ispart=0 AND channeltype=-1"}
<li><a href="[field:typedir/]" title="[field:typename/]">[field:typename/]</a></li>
{/dede:sql}
</ul>
<div class="footer">
<p>本网站地图由 <a href="[field:global.cfg_basehost/]" title="{dede:global.cfg_webname/}">{dede:global.cfg_webname/}</a> 自动生成。</p>
<p>最后更新时间:{dede:tagname runphp='yes'}@me = date('Y-m-d H:i:s');{/dede:tagname}</p>
</div>
</div>
</body>
</html>
代码解释:
- 这里使用了标准的 HTML 和 CSS,样式清晰简洁。
{dede:channel}和{dede:arclist}标签用于循环输出栏目和文章列表。[field:xxx/]用于获取字段的值,如[field:typelink/](栏目链接)、[field:title/])等。
第四步:生成自定义地图
模板创建好后,你需要通过 DedeCMS 的“更新主页HTML”功能来生成它。
- 进入后台 “首页” -> “更新主页HTML”。
- 在页面中找到 “自定义地图” 或类似选项(不同版本 DedeCMS 可能有差异,通常在“生成网站地图”附近)。
- 在 “选择主页模板” 旁边的 “自定义地图模板” 中,选择你刚刚创建的模板:
- 对于 XML 地图,选择
sitemap文件夹下的sitemap.xml。 - 对于 HTML 地图,选择
sitemap文件夹下的sitemap.html。
- 对于 XML 地图,选择
- 设置好生成目录(通常是网站根目录)。
- 点击 “开始生成”。
生成成功后,你就可以通过 https://www.yourdomain.com/sitemap.xml 和 https://www.yourdomain.com/sitemap.html 访问你的自定义网站地图了。
总结与最佳实践
-
XML vs HTML:
- XML Sitemap:给搜索引擎看的,确保它包含所有重要页面,结构清晰,符合协议。
- HTML Sitemap:给用户看的,注重可读性和美观,方便用户快速找到所需内容。
-
性能考虑:
- 对于大型网站,
{dede:arclist}不要设置row过大,否则生成地图时可能会超时或导致服务器负载过高,可以考虑按栏目分批生成。 - 定期清理过期的链接。
- 对于大型网站,
-
保持更新:
每当你更新了网站内容(如发布新文章、新增栏目),最好重新生成一次网站地图,并及时提交给搜索引擎。
通过以上步骤,你就可以制作出既符合搜索引擎要求,又对用户友好的专业级网站地图了。
