核心概念:使用“自由列表”功能

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

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

第一步:创建自由列表(生成地图数据)

这是制作地图的核心步骤,无论你做 XML 还是 HTML 地图,都需要先创建这个“自由列表”。

  1. 登录后台:进入您的 DedeCMS 管理后台。

  2. 找到功能入口:在左侧菜单栏中,找到 【核心】 -> 模型管理】

  3. 进入自由列表模型管理页面,点击右上角的 【自由列表】 按钮。

    dedecms 网站地图模板
    (图片来源网络,侵删)
  4. 配置自由列表参数

    • 列表名称:给您的地图起个名字,sitemap网站地图,这个名字只是为了后台识别,不影响最终URL。
    • 列表目录:这是地图文件最终存放的目录和文件名。非常重要!
      • 如果你想生成 www.yoursite.com/sitemap.html,就填写 sitemap.html
      • 如果你想生成 www.yoursite.com/sitemap.xml,就填写 sitemap.xml
      • 注意:目录必须存在,并且有写入权限,通常放在网站根目录下即可。
    • 列表模板:选择一个模板文件,我们先不选,等第二步创建好模板后再来这里绑定。
    • :这是地图的核心数据源。
      • 频道类型:选择 “所有栏目”
      • 内容排序:选择 “按发布时间降序”“按ID降序”,确保最新的内容排在前面。
    • 其他选项
      • 标题属性:可以留空。
      • 分页选项:地图通常不需要分页,这里可以不设置或设置一个很大的数字。
      • 列表行数:设置为 0 或一个足够大的数字(如 100000),确保所有内容都能被列出。
    • 附加选项:勾选 “启用”,并选择一个 “自定义列表类型”sitemap)。
  5. 保存:点击页面底部的 “保存” 按钮,系统会根据你的配置生成一个静态文件(sitemap.html还是默认的,因为我们还没绑定模板。


第二步:创建网站地图模板文件

现在我们来创建两种最常用的地图模板。

模板文件存放位置

请将创建的模板文件上传到您的 DedeCMS 网站目录下的 /templets/default/ 目录中,或者您当前使用的模板目录下(/templets/你的模板名称/)。

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

HTML 格式网站地图(用户友好)

这种地图方便访客浏览,了解网站的整体结构。

  1. 创建模板文件:在 /templets/default/ 目录下新建一个文件,命名为 sitemap.html

  2. 编写模板代码:将以下代码复制到 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>
  1. 绑定模板

    • 回到后台的 【自由列表】 管理页面。
    • 找到你刚才创建的那个自由列表(比如叫 网站地图)。
    • 点击 “修改”
    • “列表模板” 一栏,选择你刚刚创建的 sitemap.html 模板。
    • 点击 “保存”
  2. 更新生成:点击自由列表管理页面的 “更新” 按钮,系统会重新生成 sitemap.html 文件,现在你就可以通过 www.yoursite.com/sitemap.html 访问你的 HTML 地图了。


XML 格式网站地图(搜索引擎友好)

这种地图是专门为 Google、百度、Bing 等搜索引擎设计的,用于告诉它们网站上有哪些页面可以抓取。

  1. 创建模板文件:在 /templets/default/ 目录下新建一个文件,命名为 sitemap.xml

  2. 编写模板代码:将以下代码复制到 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 为最高)。
  1. 绑定模板

    • 回到后台的 【自由列表】 管理页面。
    • 新建一个自由列表,列表目录 填写 sitemap.xml
    • “列表模板” 一栏,选择你刚刚创建的 sitemap.xml 模板。
    • 其他配置和之前一样, 选择“所有栏目”,列表行数 设置为 0
    • 点击 “保存”
  2. 更新生成:点击新创建的自由列表的 “更新” 按钮。sitemap.xml 文件就生成了,你可以通过 www.yoursite.com/sitemap.xml 访问它,并用浏览器打开查看格式是否正确。


第三步:自动化更新地图

每天都在更新,手动更新地图很麻烦,我们可以利用 DedeCMS 的 “发布任务” 功能实现自动化。

  1. 登录后台:进入 【系统】 -> 【计划任务】 -> 【任务计划】
  2. 添加新任务
    • 任务名称自动更新网站地图
    • 执行时间:选择一个你希望的频率,每天,并设置一个具体时间(如凌晨 2 点)。
    • 执行程序:选择 自由列表
    • 任务文件:选择你之前创建的自由列表(无论是 HTML 地图还是 XML 地图)。
    • 附加参数:留空。
    • 开启任务:勾选 “开启”
  3. 保存:点击 “增加”“保存”

这样,每天到了设定的时间,系统就会自动执行更新命令,让你的网站地图始终保持最新。

步骤 操作 说明
1 创建自由列表 在后台【核心】->【内容模型管理】->【自由列表】中创建,并设置好列表目录(如 sitemap.xml)。
2 创建模板文件 /templets/default/ 目录下创建 .html.xml 文件,并填入对应的模板代码。
3 绑定模板 回到自由列表管理页面,将你创建的模板文件绑定到对应的自由列表上。
4 生成/更新 点击自由列表的 “更新” 按钮,生成第一版地图。
5 自动化(推荐) 在【系统】->【计划任务】中设置一个定时任务,让地图自动更新。

通过以上步骤,你就可以轻松地为你的 DedeCMS 网站创建出功能完善、对搜索引擎友好的网站地图了。