手动创建静态 Sitemap 模板(推荐)

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

dedecms sitemap模板
(图片来源网络,侵删)

优点:

  • 性能高:是静态文件,不占用数据库和服务器 PHP 解析资源。
  • SEO 友好:搜索引擎明确知道这是一个地图文件。
  • 控制灵活:可以自由定制要包含哪些内容(只包含文章、产品,或排除某些栏目)。

操作步骤:

第 1 步:创建 Sitemap 模板文件

  1. 在你的 DedeCMS 模板目录(通常是 /templets/你的模板名称/)下,创建一个新的文件,命名为 sitemap.xml
  2. 将下面的代码复制并粘贴到 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 步:创建自由列表

  1. 登录 DedeCMS 后台。
  2. 进入【核心】 -> 【自由列表管理】。
  3. 点击“增加自由列表”。
  4. 填写列表信息:
    • 列表名称:随便填,生成网站地图”。
    • 列表目录非常重要! 这里填写 sitemap,这样生成的文件就是 你的域名/plus/sitemap.xml
    • 列表模板:选择你刚才创建的模板文件 /templets/你的模板名称/sitemap.xml
    • 命名规则:保持默认即可。
    • 列表行数:这个数字不影响最终生成的 xml 文件条数,可以随便填一个,1000
    • 关键字:留空。
    • 保持为空! 我们不需要从数据库中查询特定内容,因为模板里的 {dede:arclist} 已经负责获取数据了。
  5. 点击“保存”按钮。

第 3 步:生成并更新 Sitemap

dedecms sitemap模板
(图片来源网络,侵删)
  1. 保存自由列表后,系统会提示你“成功增加一个自由列表”。
  2. 现在去更新它,进入【生成】 -> 【更新自由列表】
  3. 在新页面中,找到你刚刚创建的“生成网站地图”,勾选它,然后点击“开始更新”。
  4. 更新成功后,你的网站地图就已经生成了,访问 https://www.yourdomain.com/plus/sitemap.xml 就可以看到效果。

第 4 步:设置定时任务(可选但推荐)

为了保持地图的“新鲜度”,你可以设置一个定时任务,让服务器每天自动更新一次这个自由列表。

  • Linux 服务器:使用 crontab,可以写一个 PHP 脚本,模拟后台登录并执行更新操作,然后让 crontab 每天执行这个脚本。
  • Windows 服务器:使用“任务计划程序”。
  • 面板用户:宝塔面板、cPanel 等都自带定时任务功能,可以设置一个 URL 访问任务,每天访问 DedeCMS 后台的“更新自由列表”页面(需要你先登录一次,保持 session 有效,或者找到无参数更新的接口)。

使用系统自带的动态 Sitemap

DedeCMS 后台也提供了一个简单的动态生成 sitemap 的功能,但它生成的是 HTML 文件,主要用于用户浏览,而不是提交给搜索引擎的 XML 地图。

操作步骤:

  1. 登录 DedeCMS 后台。
  2. 进入【生成】 -> 【HTML更新】
  3. 在页面底部找到“更新所有文件/HTML”按钮。
  4. 点击后,在弹出的页面中,找到“生成网站地图”的选项,勾选它。
  5. 点击“开始生成”。
  6. 生成完成后,地图文件会保存在你的网站根目录下,文件名为 sitemap.html

缺点:

dedecms sitemap模板
(图片来源网络,侵删)
  • 生成的是 sitemap.html,而不是搜索引擎偏好的 sitemap.xml
  • 文件是静态的,但内容是固定的,不会自动更新,需要手动重复以上步骤。
  • 不如手动模板灵活。

强烈推荐使用方法一


总结与建议

特性 方法一 (静态模板 + 自由列表) 方法二 (系统自带功能)
文件类型 .xml (标准) .html (非标准)
SEO 效果 极佳 一般
更新方式 手动更新或设置定时任务 完全手动
灵活性 极高,可自由定制内容 较低,固定格式
推荐度 ⭐⭐⭐⭐⭐ (首选) ⭐⭐ (仅作备用或用户地图)

最终建议:

为了获得最佳的 SEO 效果和网站维护体验,请采用 方法一,花一点时间配置好静态 sitemap 模板和自由列表,并设置一个简单的定时任务,你就可以一劳永逸,让搜索引擎随时都能抓取到你网站最新的结构信息。