织梦如何调用主栏目下的子栏目?

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

使用 {dede:channelartlist} 标签(推荐,最常用)

这个标签专门用于获取指定父栏目下的所有子栏目,并且可以循环输出每个子栏目下的文章列表,这是实现“主栏目下子栏目”调用的最佳方式。

标签结构

{dede:channelartlist typeid='父栏目ID'}
    <h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
    <ul>
        {dede:arclist titlelen='30' row='8'}
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
            <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
        </li>
        {/dede:arclist}
    </ul>
{/dede:channelartlist}

参数详解

  1. {dede:channelartlist typeid='父栏目ID'}

    • typeid: 这是最关键的参数,你需要填写你想要调用的父栏目(主栏目)的ID
    • 如果你想调用当前所在栏目的父栏目下的所有子栏目,可以使用 typeid='~typeid~'
    • 如果不填写 typeid,默认会调用顶级栏目。
  2. {dede:field name='typeurl'/}

    • 输出当前循环到的子栏目的链接地址。
  3. {dede:field name='typename'/}

    • 输出当前循环到的子栏目的名称。
  4. {dede:arclist ...}

    • 这个标签嵌套在 {dede:channelartlist} 内部,用于循环输出当前子栏目下的文章列表。
    • titlelen='30': 标题长度,截取30个字符。
    • row='8': 调用文章的数量,调用8篇。
    • 你可以在这个标签内使用所有 arclist 标签支持的属性,如 orderby='hot' (按热调), idlist='' (指定文章ID) 等。

使用 {dede:channel} 标签(仅调用子栏目列表)

如果你的需求仅仅是显示子栏目的列表,而不需要在每个子栏目下再显示文章,那么使用 {dede:channel} 会更简单。

标签结构

{dede:channel type='son' typeid='父栏目ID'}
    <a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}

参数详解

  1. {dede:channel type='son' typeid='父栏目ID'}

    • typeid: 同样,填写父栏目(主栏目)的ID
    • type='son': 这是核心参数,表示只调用指定栏目ID下的直接子栏目(一级子栏目)。
  2. [field:typeurl/][field:typename/]

    分别输出子栏目的链接和名称。

如何获取父栏目ID?

在织梦后台,将鼠标移动到“栏目名称”上,浏览器左下角状态栏会显示该栏目的链接,cid= 后面的数字就是该栏目的ID。


使用SQL标签 {dede:sql} (最灵活,适合复杂需求)

如果你的需求非常特殊,比如需要跨栏目调用,或者需要获取一些额外的自定义字段信息,那么可以直接使用SQL查询。

标签结构

{dede:sql sql='SELECT id,typename,typedir FROM `dede_arctype` WHERE reid = 父栏目ID ORDER BY id'}
    <a href='/[field:typedir/]/'>[field:typename/]</a>
{/dede:sql}

参数详解

  • sql: 这里是标准的MySQL查询语句。
    • dede_arctype: 这是织梦存放栏目的数据表(如果你的前缀不是 dede_,请修改)。
    • reid = 父栏目ID: reid 字段存储的是父栏目的ID,这里你需要手动填入你想要调用的父栏目ID。
    • ORDER BY id: 按栏目ID排序,你也可以用 sortrank 排序。
  • [field:typedir/][field:typename/]: 输出查询结果中的对应字段。

注意: 使用SQL标签需要你对织梦的数据表结构有一定了解,并且要注意SQL注入的风险,确保 父栏目ID 是一个确定的数字。


总结与对比

方法 优点 缺点 适用场景
{dede:channelartlist} 功能最强大,结构清晰,可同时输出子栏目列表及其下的文章。 标签层级稍多,理解成本略高。 网站首页、栏目页,需要展示“栏目+其下推荐文章”的经典布局。
{dede:channel} 标签简单,调用速度快,只获取子栏目信息。 功能单一,无法直接调用子栏目下的文章。 仅需要展示一个纯子栏目导航列表时,如页脚的“产品分类”。
{dede:sql} 灵活性最高,可以获取任何你想要的字段,不受限于默认标签。 需要懂SQL,有安全风险,可读性差。 调用自定义字段、跨栏目调用、实现复杂逻辑等特殊需求。

对于绝大多数情况,强烈推荐使用第一种方法 {dede:channelartlist},因为它完美地契合了“调用主栏目下子栏目”这一需求,并且功能全面。

-- 展开阅读全文 --
头像
织梦无缩略图不显示,问题出在哪?
« 上一篇 01-09
C语言如何用while循环求n的阶乘?
下一篇 » 01-09

相关文章

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

目录[+]