核心思路

DedeCMS 本身没有像 WordPress 那样内置一个简单的“生成网站地图”按钮,它的核心思路是:

dedecms 网站地图 模板
(图片来源网络,侵删)
  1. 创建一个频道模型:这个模型专门用来存放网站地图的条目。
  2. 添加栏目:创建一个专门的栏目(网站地图”),并选择上面创建的模型。
  3. 编写模板:为这个栏目制作一个模板文件,用于展示地图内容。
  4. :通过“自由列表”功能,自动将所有需要展示在地图上的栏目、文章等信息,批量生成到这个栏目下。
  5. 访问和提交:访问生成的地图页面,并将其提交给搜索引擎。

第一步:创建网站地图模型

这个模型是地图内容的“容器”。

  1. 登录 DedeCMS 后台。
  2. 进入【核心】 -> 【频道模型】 -> 【添加模型】。
  3. 填写模型信息:
    • 模型名称:填写 网站地图Sitemap
    • 模型表:系统会自动生成,如 dede_sgmap,无需修改。
    • 字段:默认的 title (标题) 和 body (内容) 就足够了,你也可以根据需要添加,url 字段来直接存储链接,但通常我们通过模板来动态生成。
  4. 保存模型。

第二步:创建网站地图栏目

这个栏目是地图内容在前台的展示入口。

  1. 进入【核心】 -> 【栏目管理】 -> 【添加栏目】。
  2. 填写栏目信息:
    • 栏目名称:填写 网站地图Sitemap
    • 栏目目录:填写 sitemapsitemap-html(建议使用英文,避免路径问题)。
    • 栏目类型:选择外部链接(如果只想生成一个静态页面)或内部栏目(如果想在栏目列表中看到它),通常选择“内部栏目”即可。
    • 模型选择你刚刚创建的“网站地图”模型
    • 列表模板:选择一个默认的列表模板,或者留空,因为我们后面会完全自定义它。
    • 默认页模板这是关键! 我们将在这里编写地图的 HTML 模板。
  3. 保存栏目。

第三步:编写网站地图模板

这是最核心的一步,决定了地图的最终样式和内容。

制作 HTML 格式的网站地图 (sitemap.html)

这个模板主要用于用户浏览,方便他们快速找到所有页面。

dedecms 网站地图 模板
(图片来源网络,侵删)
  1. 在后台找到【模板】 -> 【默认模板管理】
  2. 在左侧选择你刚刚创建的“网站地图”栏目。
  3. 找到“默认页模板”对应的编辑框,清空里面的默认内容。
  4. 将以下代码粘贴进去,并根据你的网站结构进行修改。

HTML 网站地图模板代码示例:

{dede:include filename="head.htm"/}
<!-- 网站地图内容开始 -->
<div class="sitemap-container">
    <h1>网站地图 - {dede:global.cfg_webname/}</h1>
    <p>本站地图收录了所有栏目和文章,方便您快速导航。</p>
    <!-- 一级栏目列表 -->
    <h2>所有栏目</h2>
    <ul class="column-list">
        {dede:channel type='top'}
        <li><a href="[field:typelink/]">[field:typename/]</a></li>
        {/dede:channel}
    </ul>
    <!-- 文章地图 (可以按栏目分组) -->
    <h2>文章列表</h2>
    {dede:channelArtlist typeid='0' col='1' titlelen='24' row='100'}
    <h3>[field:typename/]</h3>
    <ul class="article-list">
        {dede:arclist titlelen='60' row='100'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
        {/dede:arclist}
    </ul>
    {/dede:channelArtlist}
    <!-- 其他自定义内容,比如单页、产品等 -->
    <!-- 单页栏目 -->
    <h2>关于我们 / 联系我们</h2>
    <ul class="page-list">
        {dede:sql sql="SELECT * FROM dede_arctype where mid=1 and ishidden<>1 ORDER BY sortrank"}
        <li><a href="[field:typedir function='str_replace("{cmspath}"," ",@me)'/]">[field:typename/]</a></li>
        {/dede:sql}
    </ul>
</div>
{dede:include filename="foot.htm"/}

代码解释:

  • {dede:channel type='top'}:获取所有顶级栏目。
  • {dede:channelArtlist ...}:循环获取所有一级栏目,并在每个栏目下调用其文章列表。typeid='0' 表示所有栏目。
  • {dede:arclist ...}:在 channelArtlist 内部,获取指定栏目的文章列表。row='100' 表示获取前100篇,你可以设置一个足够大的数字。
  • {dede:sql ...}:一个强大的自定义SQL标签,可以用来获取非文章模型的数据,比如单页内容。mid=1 通常代表单页模型,如果你的单页模型ID不是1,请自行修改。

制作 XML 格式的网站地图 (sitemap.xml)

这个模板专门用于提交给搜索引擎(如百度、谷歌)。

重要提示: 你不能直接在后台编辑器里写 .xml 文件,因为编辑器会格式化代码并添加 HTML 标签,最简单的方法是:

dedecms 网站地图 模板
(图片来源网络,侵删)
  1. 在你的电脑上新建一个文本文档。
  2. 将下面的代码粘贴进去。
  3. 将文件保存为 sitemap.xml
  4. 通过 FTP 或主机文件管理器,将这个 sitemap.xml 文件上传到你的网站根目录。
  5. 修改你的网站首页模板(通常是 index.htm),在底部添加一个指向 sitemap.xml 的链接。

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:formatdate function='strftime("%Y-%m-%d",@me)'/}</lastmod>
        <changefreq>daily</changefreq>
        <priority>1.0</priority>
    </url>
    <!-- 所有栏目页 -->
    {dede:channel type='top'}
    <url>
        <loc>[field:typelink/]</loc>
        <lastmod>{dede:formatdate function='strftime("%Y-%m-%d",@me)'/}</lastmod>
        <changefreq>weekly</changefreq>
        <priority>0.8</priority>
    </url>
    {/dede:channel}
    <!-- 所有文章页 -->
    {dede:arclist row='10000' orderby='pubdate'}
    <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}
</urlset>

代码解释:

  • xmlns="http://www.sitemaps.org/schemas/sitemap/0.9":声明这是一个标准的 Sitemap 0.9 协议文件。
  • <loc>:页面的绝对 URL。
  • <lastmod>:页面的最后修改日期。
  • <changefreq>:页面的更新频率(如 always, hourly, daily, weekly, monthly, yearly, never)。
  • <priority>:页面相对于网站上其他页面的优先级(0.0 到 1.0)。

第四步:生成地图内容

对于 HTML 地图,你需要用“自由列表”功能来填充内容。

  1. 进入【核心】 -> 【自由列表】
  2. 名称:填写 生成网站地图
  3. 列表模板:选择你之前为“网站地图”栏目创建的“默认页模板”。
  4. 按栏目生成:选择“是”。
  5. 选择栏目:选择所有需要包含在地图中的栏目,或者选择“所有栏目”。
  6. 时间限制:可以留空,表示不限制。
  7. 排序:可以按 idsortrank 排序。
  8. 点击“开始生成”。
  9. 生成成功后,去【内容】 -> 【批量维护】 -> 【一键生成HTML】 中,找到你的“网站地图”栏目,执行“更新HTML”。

访问 你的域名/sitemap/(或你设置的栏目目录),就能看到你的 HTML 网站地图了。


总结与注意事项

地图类型 模板位置 生成方式 用途
HTML 地图 后台【模板管理】->【栏目默认页模板】 自由列表 + 一键生成HTML 供用户浏览,提升用户体验和SEO内链
XML 地图 网站根目录 sitemap.xml (手动上传/更新) 手动创建文件,或写脚本更新 提交给搜索引擎(百度站长平台、Google Search Console)

重要提示:

  • 更新频率:网站地图不是一劳永逸的,当你新增或删除大量内容后,需要重新生成 HTML 地图并更新 XML 地图文件。
  • URL 格式:确保你的网站使用的是绝对路径(https://www.domain.com/...),而不是相对路径,这在 XML 地图中尤其重要。
  • 性能:如果你的网站文章非常多(比如数万篇),一次性全部生成到地图中可能会影响生成速度和页面加载速度,可以考虑只收录最近一年或更新的文章。
  • 分页:对于超大型网站,XML 地图可以分页生成(如 sitemap1.xml, sitemap2.xml),并创建一个 sitemap_index.xml 文件来索引它们,但这对普通网站来说过于复杂。

希望这份详细的指南能帮助你成功制作出 DedeCMS 的网站地图!