dedecms如何指定多个栏目?

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

使用 typeid 属性(推荐,最常用)

这是最直接、最常用的方法。typeid 属性用于指定要调用的栏目 ID,多个栏目 ID 用英文逗号 分隔。

dede channel 指定多个栏目
(图片来源网络,侵删)

基本语法

{dede:channel typeid='栏目ID1,栏目ID2,栏目ID3' ...}
    <a href='[field:typeurl/]'>[field:typename/]</a>
{/dede:channel}

示例

假设你要同时调用 ID 为 1、3、5 的三个顶级栏目。

<ul>
    {dede:channel typeid='1,3,5'}
        <li><a href="[field:typeurl/]">[field:typename/]</a></li>
    {/dede:channel}
</ul>

进阶用法:指定栏目级别

你还可以在 typeid 中指定不同层级的栏目,DedeCMS 会自动处理层级关系。

示例:调用 ID 为 1 的一级栏目及其所有子栏目

<ul>
    {dede:channel type='son' typeid='1'}
        <li><a href="[field:typeurl/]">[field:typename/]</a></li>
    {/dede:channel}
</ul>

这里的 type='son' 表示调用指定栏目(ID=1)的子栏目。

dede channel 指定多个栏目
(图片来源网络,侵删)

使用 reid 属性(调用指定父栏目的所有子栏目)

如果你的多个栏目是同一个父栏目的子栏目,使用 reid 属性会更方便。reid 指的是父栏目 ID

基本语法

{dede:channel reid='父栏目ID' ...}
    <a href='[field:typeurl/]'>[field:typename/]</a>
{/dede:channel}

示例

假设栏目结构如下:

  • 首页 (ID: 1)
    • 产品中心 (ID: 2)
      • 产品分类一 (ID: 7)
      • 产品分类二 (ID: 8)
      • 产品分类三 (ID: 9)
    • 新闻资讯 (ID: 3)
      • 公司新闻 (ID: 10)
      • 行业动态 (ID: 11)

如果你想一次性调用“产品分类一”、“产品分类二”、“产品分类三”,你可以使用它们的父栏目 ID 2

<div class="product-categories">
    <h3>产品分类</h3>
    <ul>
        {dede:channel reid='2'}
            <li><a href="[field:typeurl/]">[field:typename/]</a></li>
        {/dede:channel}
    </ul>
</div>

这个方法比 typeid='7,8,9' 更灵活,因为如果将来在“产品中心”下增加了新的子栏目,无需修改模板代码。


使用 SQL 查询(最灵活,功能最强)

typeidreid 无法满足复杂需求时(调用多个不同父栏目的子栏目,或者有其他筛选条件),可以直接在模板中嵌入 SQL 查询。

基本语法

使用 {dede:sql}

{dede:sql sql="SELECT id,typename,typeurl FROM `dede_arctype` WHERE id IN (栏目ID1,栏目ID2,栏目ID3) ORDER BY id"}
    <a href='[field:typeurl/]'>[field:typename/]</a>
{/dede:sql}

示例

假设你想要调用 ID 为 7、8、10、11 的栏目,它们属于不同的父栏目。

<div class="mixed-categories">
    <h3>指定栏目</h3>
    <ul>
        {dede:sql sql="SELECT id,typename,typeurl FROM `dede_arctype` WHERE id IN (7,8,10,11) ORDER BY id ASC"}
            <li><a href="[field:typeurl/]">[field:typename/]</a></li>
        {/dede:sql}
    </ul>
</div>

SQL 语句说明:

  • SELECT id,typename,typeurl FROM dede_arctype:从 dede_arctype (栏目表) 中选择 idtypename (栏目名) 和 typeurl (栏目链接) 这几个字段。
  • WHERE id IN (7,8,10,11):筛选出 ID 为 7、8、10、11 的记录。IN 关键字用于指定多个可能的值。
  • ORDER BY id ASC:按 ID 升序排列,让栏目顺序固定。

总结与对比

方法 适用场景 优点 缺点
typeid 调用任意指定的几个栏目(无论层级)。 简单、直观、最常用。 如果栏目 ID 变动,需要手动修改模板。
reid 调用同一个父栏目下的所有子栏目 自动包含所有子栏目,维护方便。 不适用于跨父栏目的多个栏目。
{dede:sql} 需要复杂筛选条件(如跨父栏目、按字母排序等)。 功能最强大,灵活性极高。 需要编写 SQL 语句,对新手有一定门槛。

如何选择?

  1. 如果只是调用几个已知的、不相关的栏目,直接用 typeid
  2. 如果调用的是一个栏目下的所有子栏目,用 reid 更方便。
  3. 如果需求非常复杂,比如要调用多个父栏目的子栏目,或者需要按特定字段排序,那么使用 {dede:sql} 是最好的选择。

获取栏目 ID 的方法

如果你不确定栏目的 ID,可以在 DedeCMS 后台找到:

  1. 登录后台。
  2. 点击顶部菜单的【核心】 -> 【栏目管理】。
  3. 在栏目列表中,将鼠标悬停在你想要查看的栏目名称上,浏览器左下角会显示链接,其中的 cid= 后面的数字就是该栏目的 ID。
-- 展开阅读全文 --
头像
c语言中运算对象必须是整型的运算符是
« 上一篇 12-06
dede album_edit.php漏洞如何利用?
下一篇 » 12-06

相关文章

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