手动创建静态 Sitemap 模板(推荐)
这种方法生成的 sitemap.xml 是一个真正的静态文件,对搜索引擎非常友好,且加载速度快,它利用了 DedeCMS 的 自由列表 功能。

(图片来源网络,侵删)
优点:
- 性能高:是静态文件,不占用数据库和服务器 PHP 解析资源。
- SEO 友好:搜索引擎明确知道这是一个地图文件。
- 控制灵活:可以自由定制要包含哪些内容(只包含文章、产品,或排除某些栏目)。
操作步骤:
第 1 步:创建 Sitemap 模板文件
- 在你的 DedeCMS 模板目录(通常是
/templets/你的模板名称/)下,创建一个新的文件,命名为sitemap.xml。 - 将下面的代码复制并粘贴到
sitemap.xml文件中。
{dede:global name='cfg_plus_dir'/}/sitemap.xml
<?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:tagname runphp='yes'}@me = date('Y-m-d');{/dede:tagname}</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<!-- 文章栏目 -->
{dede:channelartlist typeid='0' row='100'}
<url>
<loc>https://www.yourdomain.com{dede:field name='typelink'/}</loc>
<lastmod>{dede:tagname runphp='yes'}@me = date('Y-m-d');{/dede:tagname}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
{/dede:channelartlist}
<!-- 文章内容页 -->
{dede:arclist row='5000' orderby='pubdate' typeid='0'}
<url>
<loc>https://www.yourdomain.com[field:arcurl/]</loc>
<lastmod>[field:pubdate function="MyDate('Y-m-d', @me)"/]</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
{/dede:arclist}
<!-- 自定义模型内容页 (产品、下载等) -->
{dede:arclist row='5000' orderby='pubdate' channelid='1'}
<!-- 注意:channelid='1' 是自定义模型的ID,你需要根据你的模型ID进行修改 -->
<url>
<loc>https://www.yourdomain.com[field:arcurl/]</loc>
<lastmod>[field:pubdate function="MyDate('Y-m-d', @me)"/]</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
{/dede:arclist}
</urlset>
代码解释:
<?xml ... ?>:标准的 XML 声明。<urlset xmlns="...">:声明这是一个符合 Sitemap 0.9 协议的地图文件。<url>:地图中每一个条目的开始和结束标签。<loc>:必须,页面的绝对 URL。请务必将https://www.yourdomain.com替换成你自己的域名。<lastmod>:推荐,页面的最后修改日期,我们使用了date('Y-m-d')来动态生成今天的日期,对于栏目页来说足够了,对于文章页,则使用了文章的发布日期。<changefreq>:可选更新频率(如always,hourly,daily,weekly,monthly,yearly,never),这只是一个提示,搜索引擎不一定会遵循。<priority>:可选,相对于网站上其他页面的优先级(0.0 到 1.0),首页为 1.0,栏目页为 0.8,内容页为 0.6,是比较合理的设置。{dede:channelartlist ...}:用于循环输出所有一级栏目及其子栏目。{dede:arclist ...}:用于循环输出文章列表。row='5000':设置最大输出条数,确保能包含所有文章,如果你的文章远不止5000篇,可以调大这个数字。orderby='pubdate':按发布日期排序,方便获取最新的修改时间。typeid='0':表示调用所有栏目,如果你只想调用某些栏目,可以填写栏目ID,如typeid='1,2,3'。channelid='1':这是调用自定义模型的关键,你需要进入 DedeCMS 后台的【核心】->【内容模型管理】中,找到你想要添加到地图的模型(如“产品”),并记下它的ID,然后在这里修改。
第 2 步:创建自由列表
- 登录 DedeCMS 后台。
- 进入【核心】 -> 【自由列表管理】。
- 点击“增加自由列表”。
- 填写列表信息:
- 列表名称:随便填,生成网站地图”。
- 列表目录:非常重要! 这里填写
sitemap,这样生成的文件就是你的域名/plus/sitemap.xml。 - 列表模板:选择你刚才创建的模板文件
/templets/你的模板名称/sitemap.xml。 - 命名规则:保持默认即可。
- 列表行数:这个数字不影响最终生成的 xml 文件条数,可以随便填一个,
1000。 - 关键字:留空。
- :保持为空! 我们不需要从数据库中查询特定内容,因为模板里的
{dede:arclist}已经负责获取数据了。
- 点击“保存”按钮。
第 3 步:生成并更新 Sitemap

(图片来源网络,侵删)
- 保存自由列表后,系统会提示你“成功增加一个自由列表”。
- 现在去更新它,进入【生成】 -> 【更新自由列表】。
- 在新页面中,找到你刚刚创建的“生成网站地图”,勾选它,然后点击“开始更新”。
- 更新成功后,你的网站地图就已经生成了,访问
https://www.yourdomain.com/plus/sitemap.xml就可以看到效果。
第 4 步:设置定时任务(可选但推荐)
为了保持地图的“新鲜度”,你可以设置一个定时任务,让服务器每天自动更新一次这个自由列表。
- Linux 服务器:使用
crontab,可以写一个 PHP 脚本,模拟后台登录并执行更新操作,然后让crontab每天执行这个脚本。 - Windows 服务器:使用“任务计划程序”。
- 面板用户:宝塔面板、cPanel 等都自带定时任务功能,可以设置一个 URL 访问任务,每天访问 DedeCMS 后台的“更新自由列表”页面(需要你先登录一次,保持 session 有效,或者找到无参数更新的接口)。
使用系统自带的动态 Sitemap
DedeCMS 后台也提供了一个简单的动态生成 sitemap 的功能,但它生成的是 HTML 文件,主要用于用户浏览,而不是提交给搜索引擎的 XML 地图。
操作步骤:
- 登录 DedeCMS 后台。
- 进入【生成】 -> 【HTML更新】。
- 在页面底部找到“更新所有文件/HTML”按钮。
- 点击后,在弹出的页面中,找到“生成网站地图”的选项,勾选它。
- 点击“开始生成”。
- 生成完成后,地图文件会保存在你的网站根目录下,文件名为
sitemap.html。
缺点:

(图片来源网络,侵删)
- 生成的是
sitemap.html,而不是搜索引擎偏好的sitemap.xml。 - 文件是静态的,但内容是固定的,不会自动更新,需要手动重复以上步骤。
- 不如手动模板灵活。
强烈推荐使用方法一。
总结与建议
| 特性 | 方法一 (静态模板 + 自由列表) | 方法二 (系统自带功能) |
|---|---|---|
| 文件类型 | .xml (标准) |
.html (非标准) |
| SEO 效果 | 极佳 | 一般 |
| 更新方式 | 手动更新或设置定时任务 | 完全手动 |
| 灵活性 | 极高,可自由定制内容 | 较低,固定格式 |
| 推荐度 | ⭐⭐⭐⭐⭐ (首选) | ⭐⭐ (仅作备用或用户地图) |
最终建议:
为了获得最佳的 SEO 效果和网站维护体验,请采用 方法一,花一点时间配置好静态 sitemap 模板和自由列表,并设置一个简单的定时任务,你就可以一劳永逸,让搜索引擎随时都能抓取到你网站最新的结构信息。
