织梦如何调用指定栏目标签?

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

核心标签介绍

主要涉及以下几个标签:

  1. {dede:arclist}文章列表标签,这是最常用的标签,用于调用指定栏目下的文章列表。
  2. {dede:channel}栏目列表标签,用于调用指定层级的栏目列表。
  3. {dede:type}单栏目信息标签,用于获取单个栏目的详细信息(如栏目名、栏目链接、简介等)。
  4. {dede:sql}SQL查询标签,当上述标签无法满足复杂需求时,可以直接用SQL语句查询数据库。

调用指定栏目的文章列表 ({dede:arclist})

这是最常见的用法,比如在首页调用某个特定新闻栏目的最新文章。

核心属性:

  • typeid: 指定栏目ID,这是最关键的属性,你可以填写一个或多个栏目ID,用英文逗号隔开。
    • typeid='2':只调用栏目ID为2的文章。
    • typeid='2,5,8':调用栏目ID为2、5、8的文章。
  • row: 调用文章数量,显示多少条记录。
  • titlelen: 标题长度最多显示多少个字符(一个汉字算一个字符)。
  • infolen: 摘要长度description)的字符数。
  • orderby: 排序方式orderby='hot' (按点击量), orderby='pubdate' (按发布时间), orderby='sortrank' (按后台排序)。
  • limit: 记录限制,格式为 起始位置,记录数limit='0,10' 表示从第0条开始,共10条。

示例1:调用栏目ID为 1 的文章列表,显示5条,标题长度30字

{dede:arclist typeid='1' row='5' titlelen='30'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:arclist}

标签解释:

  • [field:arcurl/]:文章链接。
  • [field:title/]
  • [field:pubdate function="MyDate('Y-m-d', @me)"/]:文章发布时间,使用function进行格式化,'Y-m-d'是日期格式。

示例2:调用多个栏目(ID为2和5)的文章列表,按点击量排序,显示10条

{dede:arclist typeid='2,5' row='10' orderby='hot'}
    <div class="news-item">
        <h3><a href="[field:arcurl/]" target="_blank">[field:title/]</a></h3>
        <p class="summary">[field:description function="cn_substr(@me, 100)"]...</p>
    </div>
{/dede:arclist}

调用指定栏目的子栏目列表 ({dede:channel})

当你想在某个页面显示其直接下属的栏目时,使用 channel

核心属性:

  • typeid: 指定父栏目ID,如果为空或0,则调用顶级栏目。
  • row: 调用栏目数量
  • type: 栏目类型。top (顶级栏目), son (子栏目), self (同级栏目)。

示例:在栏目ID为3的页面,调用其所有直接子栏目

假设当前页面是栏目ID为3的页面,我们想显示它的子栏目。

<h2>子栏目列表</h2>
<ul>
    {dede:channel type='son' typeid='3'}
        <li>
            <a href="[field:typeurl/]">[field:typename/]</a>
        </li>
    {/dede:channel}
</ul>

标签解释:

  • [field:typeurl/]:栏目链接。
  • [field:typename/]:栏目名称。

调用指定栏目的信息(名称、链接、简介等) ({dede:type})

这个标签通常用在 (article_article.htm) 或栏目列表页 (list_category.htm),用于获取当前栏目或指定栏目的信息。

核心属性:

  • typeid: 指定栏目ID,如果留空,在文章页会自动获取当前文章所属的栏目ID,在栏目页会自动获取当前栏目的ID。

示例1:在文章内容页,显示当前文章所属的栏目名称和链接

article_article.htm 模板文件中:

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

或者更简洁的写法(因为typeid可以为空):

<span>栏目:<a href="[field:typeurl/]">[field:typename/]</a></span>

注意:在文章内容页,{dede:type}标签可以直接使用[field:typeurl/][field:typename/]等变量,它会自动解析当前文章的栏目信息。

示例2:在首页或其他页面,获取指定栏目(ID为4)的名称和简介

<h2>{dede:type typeid='4'}[field:typename]{/dede:type}</h2>
<p>{dede:type typeid='4'}[field:description]{/dede:type}</p>

进阶用法:调用指定栏目及其子栏目的文章

有时我们需要调用一个栏目及其所有下级栏目的文章。arclist 标签本身不支持这个功能,但我们可以通过 reid 属性结合 IN SQL 语句来实现。

方法1:使用 reid 属性(仅限一级子栏目)

arclist 有一个 reid 属性,可以调用指定栏目(通过 typeid)的直接子栏目的文章。

{dede:arclist typeid='1' reid='1' row='10'}
    <a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}
  • typeid='1':指定父栏目ID。
  • reid='1':表示调用其子栏目(ID为1的子栏目)的文章。注意:typeidreid 的值通常是一样的,都指向父栏目。

方法2:使用 IN SQL语句(推荐,支持多级子栏目)

这是最灵活、最强大的方法,可以获取一个栏目及其所有下级栏目的文章。

  1. 获取所有子栏目ID 我们需要一个函数来获取一个栏目及其所有子栏目的ID列表,织梦默认有 GetSonIds() 函数。

  2. 在模板中使用 {dede:sql}

{dede:sql sql='SELECT id, title, arcurl FROM dede_archives WHERE typeid IN (GetSonIds(1)) ORDER BY pubdate DESC LIMIT 0, 10'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
{/dede:sql}

代码解释:

  • sql='...':编写SQL查询语句。
  • GetSonIds(1):这个函数会返回栏目ID为1及其所有子栏目的ID列表,格式如 '1,2,3,4,5'
  • WHERE typeid IN (GetSonIds(1)):查询条件,typeid 在返回的ID列表中的所有文章。
  • ORDER BY pubdate DESC LIMIT 0, 10:按发布时间倒序排列,并限制为10条。

注意{dede:sql} 标签在较新版本的织梦中可能默认关闭,需要在后台“系统” -> “系统基本参数” -> “其他选项”中,开启“允许PHP代码”选项。


如何获取栏目ID?

在操作之前,你必须知道目标栏目的ID,获取方法很简单:

  1. 登录织梦后台。
  2. 进入“栏目”管理。
  3. 将鼠标移动到你想要调用的栏目名称上,浏览器左下角的状态栏会显示该栏目的编辑链接,.../catalog_add.php?dopost=edit&cid=1,其中的 cid=1 就是这个栏目的ID。
需求 推荐标签 关键属性
调用指定栏目的文章列表 {dede:arclist} typeid (必须), row, titlelen, orderby
调用指定栏目的子栏目 {dede:channel} typeid (父栏目ID), type='son'
获取指定栏目的名称/链接 {dede:type} typeid (可选,留空自动获取)
调用栏目及其所有子栏目的文章 {dede:sql} sql 语句中使用 GetSonIds() 函数

希望这份详细的指南能帮助你熟练地在织梦中调用指定栏目的内容!

-- 展开阅读全文 --
头像
dede幻灯片调用标签怎么写?
« 上一篇 今天
织梦伪静态后无法打开,原因何在?
下一篇 » 今天

相关文章

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