dede主导航如何用limit限制显示数量?

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

核心概念

在DedeCMS的模板文件中,主导航是通过一个特定的全局变量来调用的,这个变量通常是 {dede:global.cfg_webname/} 用于显示网站名称,而栏目列表则通过 {dede:channel}{dede:channelartlist} 标签来调用。

dede主导航使用 limit
(图片来源网络,侵删)

limit 参数就是这两个标签的内置属性,用于限制返回的记录数(即栏目数量)。

  • 语法: limit='起始ID,显示数量'limit='显示数量'
  • 示例1: limit='0,5' 表示从第一个栏目开始,显示5个。
  • 示例2: limit='5' 表示从第一个栏目开始,显示5个。(与示例1等价)
  • 示例3: limit='5,10' 表示从第6个栏目开始,显示10个。

直接修改模板文件(最常用、最简单)

这是最直接的方法,适用于只需要在特定位置(如网站头部)限制导航数量的情况。

操作步骤:

  1. 找到模板文件 登录你的DedeCMS后台,进入【模板】->【模板管理】。 找到你当前正在使用的模板(默认通常是 default),然后点击【默认模板管理】。 在列表中找到并打开 head.htm 文件,这个文件通常包含了网站头部的HTML结构,主导航代码一般就在这里。

    dede主导航使用 limit
    (图片来源网络,侵删)
  2. 定位主导航标签head.htm 文件中,找到类似下面这样的代码:

    <div id="nav">
        <ul>
            {dede:channel type='top'}
            <li><a href="[field:typelink/]">[field:typename/]</a></li>
            {/dede:channel}
        </ul>
    </div>
    • {dede:channel type='top'} 这个标签的作用是调用所有顶级栏目(一级分类)。
    • [field:typelink/] 是栏目的链接。
    • [field:typename/] 是栏目的名称。
  3. 添加 limit 参数{dede:channel type='top'} 标签中直接添加 limit 属性,我们只想显示前5个顶级栏目,代码就修改为:

    <div id="nav">
        <ul>
            {dede:channel type='top' limit='0,5'}
            <li><a href="[field:typelink/]">[field:typename/]</a></li>
            {/dede:channel}
            <!-- 添加一个“更多”链接 -->
            <li><a href="/sitemap.html">更多</a></li>
        </ul>
    </div>

    代码解释:

    • limit='0,5' 告诉织梦,只获取顶级栏目中ID从0开始的5个记录。
    • 我们额外添加了一个 <li>,里面包含一个指向“网站地图”或“栏目列表”页面的“更多”链接,这样用户就可以看到所有栏目了,你需要确保你的网站有这样一个页面(sitemap.html)。
  4. 更新并生成 保存 head.htm 文件,然后到【生成】->【更新主页HTML】或【更新栏目HTML】中重新生成网站,即可看到效果。

    dede主导航使用 limit
    (图片来源网络,侵删)

使用自由列表(更灵活、推荐)

如果你希望在网站的多个不同位置显示不同数量的主导航,或者需要更复杂的逻辑,使用“自由列表”功能是更好的选择,它不会修改核心模板文件,便于后期维护和升级。

操作步骤:

  1. 创建自由列表 登录DedeCMS后台,进入【核心】->【自由列表管理】。 点击右上角的【增加自由列表】按钮。

  2. 配置自由列表

    • 列表名称: 填写一个你容易识别的名称,首页主导航”。
    • 列表模板: 选择一个空的模板,或者新建一个,这里我们新建一个,nav_list.htm
    • 命名规则: 保持默认即可。
    • : 这是关键部分,你需要输入SQL查询语句来获取数据。
      • 查询顶级栏目ID和名称:
        SELECT id, typename, typedir FROM `dede_arctype` WHERE reid=0 ORDER BY id asc
        • dede_arctype 是DedeCMS中存储栏目的表名,如果你的表前缀不是 dede_,请自行修改。
        • reid=0 是筛选顶级栏目的条件。
        • ORDER BY id asc 是按栏目ID升序排列。
      • 限制数量: 在SQL语句后面加上 LIMIT 子句,只取前5个:
        SELECT id, typename, typedir FROM `dede_arctype` WHERE reid=0 ORDER BY id asc LIMIT 5
  3. 创建列表模板

    • 在上一步中,你选择了 nav_list.htm 作为模板,现在你需要去【模板】->【模板管理】中找到并编辑这个文件。

    • nav_list.htm 中写入导航的HTML结构,使用自由列表的标签 {dede:list} 来循环输出数据:

      <div id="nav-free">
          <ul>
              {dede:list}
              <li><a href="[field:typedir/]">[field:typename/]</a></li>
              {/dede:list}
              <!-- 同样可以添加“更多”链接 -->
              <li><a href="/sitemap.html">更多</a></li>
          </ul>
      </div>
      • [field:typedir/][field:typename/] 分别对应SQL查询结果中的 typedirtypename 字段。
  4. 更新并生成

    • 保存自由列表的配置和模板文件。
    • 到【生成】->【更新自由列表】中,生成你刚刚创建的这个列表。
    • 在你的主页模板(如 index.htm)中,通过 {dede:freelist} 标签来调用这个自由列表,在需要显示导航的地方插入:
      {dede:freelist name='首页主导航'/}
      • name 的值要和你第一步中填写的“列表名称”完全一致。

总结与对比

方法 优点 缺点 适用场景
直接修改模板 - 简单直接,无需额外设置
- 生效速度快
- 修改核心模板,升级DedeCMS时可能被覆盖
- 不够灵活,一个模板文件只能控制一种样式
- 简单的网站,只需要在头部固定位置限制导航数量
- 对模板修改不熟悉的新手
使用自由列表 - 灵活强大,可在多个位置调用
- 不修改核心模板,维护方便,升级安全
- 可自定义模板,样式控制更自由
- 设置步骤相对繁琐
- 需要额外生成列表
- 需要在多个不同位置显示不同数量的导航
- 对网站有复杂布局和样式要求的场景
- 专业开发者推荐使用

对于大多数用户来说,方法一已经足够满足需求,如果你追求更好的可维护性和扩展性,强烈推荐使用方法二

-- 展开阅读全文 --
头像
dede5.7整合discuz
« 上一篇 01-05
织梦自定义表单如何导出文档?
下一篇 » 01-05

相关文章

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

目录[+]