dede网站地图为何不显示文章列表?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 DEDE建站 正文

我将从最常见到最罕见的顺序,为您提供一个详细的排查和解决方案指南,请按照以下步骤逐一检查和操作。

dede网站地图不显示文章列表
(图片来源网络,侵删)

问题核心原因分析

网站地图不显示文章列表,本质上是因为DedeCMS在生成或调用地图数据时,无法找到符合条件的文章,常见原因有:

  1. 权限问题:网站目录或文件权限不正确,导致无法写入或读取地图文件。
  2. 模板问题:地图模板文件(sitemap.htm)中的调用标签错误或缺失。
  3. 栏目设置问题:相关栏目被设置为“不生成HTML”或“在频道页不显示”。
  4. 文章问题:文章本身被归档、审核未通过、或自定义属性导致被排除。
  5. 缓存问题:系统或浏览器缓存了旧的数据。
  6. 数据表问题:数据库中的dede_arctype(栏目表)或dede_archives(文章表)数据异常。

详细排查与解决步骤

第一步:检查并更新网站地图

这是最直接、最首要的步骤。

  1. 登录您的DedeCMS后台。
  2. 在左侧菜单栏找到 “频道管理” -> “网站地图维护”
  3. 在打开的页面中,您会看到“更新网站主地图”和“更新网站栏目地图”等选项。
  4. 点击 “更新网站主地图”
  5. 系统会重新生成地图文件,生成后,立即清空浏览器缓存(按 Ctrl + F5 强制刷新),然后再次访问您的网站地图页面(通常是 您的域名/sitemap.html您的域名/sitemap.xml)查看是否恢复正常。

提示:如果地图文件生成失败或生成后内容为空,请继续下一步排查。

第二步:检查目录和文件权限

DedeCMS需要写入权限来生成HTML文件,包括网站地图。

dede网站地图不显示文章列表
(图片来源网络,侵删)
  1. FTP或文件管理器登录:通过FTP工具或虚拟主机自带的文件管理器,登录到您的网站根目录。
  2. 检查关键目录权限
    • (网站根目录)
    • /templets/ (模板目录)
    • /data/ (数据目录)
    • /html/ (默认生成的HTML文件存放目录)
    • /special/ (专题目录,有时也存放地图)
  3. 设置权限:将这些目录的权限设置为 755,如果您的服务器是Windows,则确保“IIS用户”或“NETWORK SERVICE”用户对这些目录有“读取和写入”权限。
  4. 检查地图文件权限:如果地图文件已经存在,检查其权限是否为 644,确保Web服务器可以读取它。

第三步:检查网站地图模板文件 (sitemap.htm)

地图的样式和内容是由模板文件控制的,如果模板文件被误删或修改,地图就无法正确显示。

  1. 找到模板文件:通过FTP,进入网站根目录下的 /templets/ 文件夹,找到 sitemap.htm 文件。

  2. 检查文件内容:用文本编辑器(如Notepad++, VS Code)打开它,一个标准的 sitemap.htm 文件内容应该类似下面这样,核心是 {dede:channelartlist}{dede:arclist} 这两个标签。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset={dede:global.cfg_soft_lang/}" />网站地图_{dede:global.cfg_webname/}</title>
    <meta name="author" content="{dede:global.cfg_webname/}" />
    <link rel="stylesheet" type="text/css" href="{dede:global.cfg_templets_skin/}/style/dedecms.css" />
    <style>
    /* 在这里可以添加一些地图样式 */
    </style>
    </head>
    <body>
    <div class="sitemap">
    <h1><a href="{dede:global.cfg_indexurl/}">{dede:global.cfg_webname/}</a> - 网站地图</h1>
    <!-- 调用所有顶级栏目 -->
    {dede:channelartlist}
    <h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
    <ul>
        <!-- 调用当前顶级栏目下的子栏目 -->
        {dede:channel type='son' noself='yes'}
        <li><a href="[field:typelink/]">[field:typename/]</a></li>
        {/dede:channel}
        <!-- 调用当前顶级栏目下的文章列表(这是最关键的部分) -->
        {dede:arclist titlelen='60' row='20'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
        {/dede:arclist}
    </ul>
    {/dede:channelartlist}
    </div>
    </body>
    </html>
  3. 确认关键标签

    dede网站地图不显示文章列表
    (图片来源网络,侵删)
    • {dede:channelartlist}:用于循环调用顶级栏目。
    • {dede:arclist}:用于在栏目下调用文章列表。这是最容易出现问题的地方
      • row='20':表示显示20篇文章,您可以尝试调大这个数字,看是否是数量限制问题。
      • typeid='':如果留空,默认调用当前栏目的文章,如果指定了ID,则调用指定栏目下的文章,确保这里没有写死一个不存在的栏目ID。
    • 如果您的模板文件内容为空或者缺少这些核心标签,请从DedeCMS的默认模板中重新复制一个 sitemap.htm 文件到您的 /templets/ 目录下。

第四步:检查栏目设置

栏目本身的设置会阻止文章在地图中显示。

  1. 登录DedeCMS后台,进入 “栏目管理”
  2. 逐一检查您的顶级栏目和子栏目。
  3. 点击某个栏目进入编辑页面,在右侧的“高级选项”中,找到以下设置:
    • 是否生成HTML:确保这个选项是 “是”,如果设置为“仅动态”,则该栏目及其下的文章可能不会出现在静态地图中。
    • 在频道页是否显示:确保这个选项是 “是”,如果设置为“否”,系统可能会忽略该栏目的内容。
    • :检查栏目内容里是否有关键词或描述,但这通常不影响列表显示。

第五步:检查文章本身

极少数情况下,问题出在具体的文章上。

  1. 审核状态:进入 管理” -> “所有档案”,检查是否有大量文章处于“待审核”状态,未审核的文章默认不会被前台调用。
  2. 自定义属性:编辑一篇文章,在右侧的“自定义属性”中,如果勾选了 “仅动态”,那么这篇文章就不会被生成到静态的网站地图中,请确保这个选项是未勾选状态。
  3. 文章归档:检查文章是否被归档(移动到了“删除”或“回收站”状态)。

第六步:检查数据库(最后手段)

如果以上所有方法都无效,可能是数据库出现了问题。

  1. 备份数据库:在进行任何数据库操作前,务必备份数据库

  2. 检查数据表

    • 进入 “系统” -> “系统设置” -> “SQL命令行工具”**。

    • 在“命令运行”文本框中,输入以下命令,然后点击“运行查询”,这会检查dede_arctype(栏目表)和dede_archives(文章表)是否存在,并修复可能的索引问题。

      -- 检查并修复文章表
      REPAIR TABLE `dede_archives`;
      OPTIMIZE TABLE `dede_archives`;
      -- 检查并修复栏目表
      REPAIR TABLE `dede_arctype`;
      OPTIMIZE TABLE `dede_arctype`;
  3. 手动检查:如果您熟悉数据库,可以直接登录phpMyAdmin等数据库管理工具,查看 dede_arctype 表中的 ispartishidden 字段,以及 dede_archives 表中的 arcrank 字段,看是否有异常值(如ispart=1表示单页,ishidden=1表示隐藏,arcrank=-1表示未审核)。


总结与快速排查清单

遇到“Dede网站地图不显示文章列表”时,请按以下顺序快速检查:

  1. 后台更新地图:进入“网站地图维护”,点击“更新网站主地图”,然后强制刷新浏览器。
  2. 检查权限:确保 /templets/, /data/, /html/ 目录权限为 755
  3. 检查模板:确认 /templets/sitemap.htm 文件存在且包含 {dede:channelartlist}{dede:arclist row='20'}
  4. 检查栏目:进入“栏目管理”,确保相关栏目的“是否生成HTML”和“在频道页是否显示”都为“是”。
  5. 检查文章:确认文章已审核,且“自定义属性”里没有勾选“仅动态”。

按照这个流程,90%以上的问题都能得到解决,如果问题依然存在,那么很可能是服务器环境或数据库底层的问题,建议联系您的服务器或虚拟主机提供商寻求帮助。

-- 展开阅读全文 --
头像
页如何调用顶级栏目名称?
« 上一篇 01-03
dede文章页如何调用文章短标题?
下一篇 » 01-03

相关文章

取消
微信二维码
支付宝二维码