织梦CMS顶级栏目点击后为何无内容?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 织梦建站 正文

点击顶级栏目,跳转到该栏目下的文章列表页(最常见)

这是织梦CMS的默认行为,也是绝大多数网站的需求,你不需要做任何特殊的设置。

织梦cms点击顶级栏目
(图片来源网络,侵删)

工作原理:

  1. 在织梦后台,你创建一个顶级栏目(公司新闻”)。
  2. 这个栏目被分配了一个固定的ID(arctypeid=3)。
  3. 织梦会自动为这个栏目生成一个对应的列表页模板,通常是 list_arctypeid_3.htmllist_3.html)。
  4. 在你的首页或其他页面上,当你调用顶级栏目的链接时,织梦会自动生成指向这个列表页的URL。

如何实现(前端代码): 在模板文件(如 index.htm)中,使用织梦的标签 {dede:channel} 来调用栏目。

示例代码:

{dede:channel type='top' row='8'}
    <a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}

代码解释:

织梦cms点击顶级栏目
(图片来源网络,侵删)
  • {dede:channel type='top' row='8'}: 这是一个循环标签,用于调用栏目。
    • type='top': 关键参数,表示只调用顶级栏目。
    • row='8': 表示调用8个顶级栏目。
  • [field:typelink/]: 这是字段标签,输出栏目的链接地址,它自动指向 list_x.html
  • [field:typename/]: 输出栏目的名称。

如果你只想让点击顶级栏目后,看到该栏目下的所有文章列表,直接使用上述代码即可,这是织梦的默认功能。


点击顶级栏目,跳转到该栏目下的一个指定文章(栏目首页”或“关于我们”)

顶级栏目本身不想显示文章列表,而是想让它像一个独立的页面,比如跳转到“关于我们”页面。

实现方法:

  1. 在后台创建一个单页文档:

    织梦cms点击顶级栏目
    (图片来源网络,侵删)
    • 登录织梦后台 -> 内容 -> 单页文档管理 -> 增加。
    • ,关于我们”。
    • ”编辑器中填写你的页面内容。
    • 提交后,记下这篇文章的ID(aid=10)。
  2. 修改顶级栏目的“栏目内容”:

    • 进入“核心” -> “栏目管理”,找到你想要修改的顶级栏目(公司介绍”)。
    • 点击进入编辑。
    • 在“栏目内容”这一项,不要填写任何内容
    • 关键步骤: 在这个页面下方,找到并勾选 “使用栏目页模板”,这一步很重要,它确保了即使没有“栏目内容”,也不会显示默认的文章列表。
  3. 修改顶级栏目的“外部链接”:

    • 在同一个栏目编辑页面,找到“高级选项” -> “选项”。
    • 勾选 “链接到外部网址”
    • 在下方的输入框中,填入你之前创建的单页文档的链接,链接格式是:/plus/view.php?aid=10
    • (可选但推荐) 你也可以直接填写该文章的静态URL(如果你开启了伪静态,/aboutus.html)。
  4. 保存修改。

效果: 当你在前台点击“公司介绍”这个顶级栏目时,它就不会跳转到文章列表页了,而是会直接跳转到你设置的“关于我们”单页内容。


点击顶级栏目,跳转到该栏目下的子栏目列表页

这种需求也很常见,比如一个“产品中心”顶级栏目,点击后直接展示所有“产品分类”子栏目,而不是产品文章。

实现方法: 这需要用到织梦的自定义模型栏目列表模板

  1. 创建一个“栏目导航”模型(可选但推荐):

    • 后台 -> 核心 -> 频道模型 -> 内容模型管理 -> 增加。
    • 模型名称:栏目导航
    • 模型表前缀:#@_addonarticle (或任意不重复的前缀)。
    • 这个模型可以让你为每个子栏目添加一个简介、图片等,让导航页更丰富。
  2. 创建顶级栏目,并绑定模型:

    • 进入“栏目管理”,创建一个顶级栏目,产品中心”。
    • 在“高级选项” -> “内容模型”中,选择你刚刚创建的“栏目导航”模型(或者直接使用默认的“普通文章”也可以)。
  3. 创建子栏目:

    • 在“产品中心”下创建子栏目,产品分类A”、“产品分类B”。
    • 重要: 这些子栏目必须是“栏目首页”,并且它们下面可以继续放文章。
  4. 设置顶级栏目的“栏目列表选项”:

    • 编辑“产品中心”这个顶级栏目。
    • 找到“栏目列表选项”。
    • 勾选 “使用列表页模板”
    • 在下面的“列表内容模板”中,选择一个适合显示子栏目的模板,织梦默认可能没有,你可能需要自己创建一个,list_productnav.htm
  5. 创建自定义列表模板 list_productnav.htm

    • 在你的模板目录(如 /templets/default/)下新建一个文件 list_productnav.htm
    • 在这个文件里,编写代码来调用当前栏目的所有子栏目。

    list_productnav.htm 文件内容示例:

    <h2>产品分类</h2>
    <ul>
      {dede:channel type='son' noself='yes'}
        <li>
          <a href="[field:typelink/]">
            [field:typename/]
          </a>
        </li>
      {/dede:channel}
    </ul>
    • {dede:channel type='son' noself='yes'}: 这个标签专门用于调用当前栏目的子栏目。
      • type='son': 表示调用子栏目。
      • noself='yes': 表示不调用栏目本身。
  6. 保存并更新:

    • 保存所有修改。
    • 去“生成” -> “更新栏目HTML”,更新“产品中心”栏目的HTML。

效果: 现在点击“产品中心”顶级栏目,就会显示你自定义的 list_productnav.htm 页面,该页面会列出所有“产品分类A”、“产品分类B”等子栏目。


完全自定义顶级栏目的点击行为(例如执行JS、跳转外部链接等)

如果上述方法都无法满足你的需求,你可能需要在HTML层面进行更直接的控制。

实现方法:

  1. 在后台获取目标URL:

    在后台确定好这个顶级栏目点击后应该跳转到的具体地址(无论是文章列表、单页、外部网址还是JS函数)。

  2. 手动编写HTML链接:

    • 放弃使用 {dede:channel} 标签,直接在模板文件中手写 <a>

    示例1:跳转到外部链接

    <!-- "联系我们"栏目直接跳转到百度 -->
    <a href="https://www.baidu.com" target="_blank">联系我们</a>

    示例2:执行JavaScript函数

    <!-- 点击"在线客服"栏目时,执行一个显示客服窗口的JS函数 -->
    <a href="javascript:;" onclick="showCustomerService();">在线客服</a>
    <script>
    function showCustomerService() {
      // 这里写你的JS代码,比如弹出一个div
      alert('客服功能开发中...');
      // 或者打开一个新窗口
      // window.open('/service.html', '_blank');
    }
    </script>

缺点: 这种方法会失去织梦CMS的动态管理优势,如果你在后台修改了栏目的名称,你必须手动去模板文件里修改HTML代码,否则前端不会更新。


总结与建议

你的需求 推荐的实现方法 优点 缺点
点击进入文章列表 使用 {dede:channel type='top'} 织梦默认功能,最简单、最标准 功能固定
点击进入一个指定页面 使用“外部链接”功能 管理方便,在后台即可配置 需要额外创建一个单页文档
点击进入子栏目列表 使用自定义列表模板 灵活,可以设计出丰富的导航页 需要创建模板文件,略复杂
执行特殊操作(JS等) 手动编写 <a> 完全自由,不受CMS限制 失去动态更新能力,维护麻烦

对于绝大多数网站,场景一和场景二已经足够解决“点击顶级栏目”的问题,请根据你的具体业务逻辑,选择最合适的方案。

-- 展开阅读全文 --
头像
dede自定义表单提交失败怎么办?
« 上一篇 今天
织梦Dede如何添加新字体?
下一篇 » 今天

相关文章

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