核心标签介绍
主要涉及以下几个标签:
{dede:arclist}:文章列表标签,这是最常用的标签,用于调用指定栏目下的文章列表。{dede:channel}:栏目列表标签,用于调用指定层级的栏目列表。{dede:type}:单栏目信息标签,用于获取单个栏目的详细信息(如栏目名、栏目链接、简介等)。{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})
当你想在某个页面显示其直接下属的栏目时,使用 假设当前页面是栏目ID为3的页面,我们想显示它的子栏目。 标签解释: 这个标签通常用在页 ( 在 或者更简洁的写法(因为 注意:在文章内容页, 有时我们需要调用一个栏目及其所有下级栏目的文章。 这是最灵活、最强大的方法,可以获取一个栏目及其所有下级栏目的文章。 获取所有子栏目ID
我们需要一个函数来获取一个栏目及其所有子栏目的ID列表,织梦默认有 在模板中使用 代码解释: 注意: 在操作之前,你必须知道目标栏目的ID,获取方法很简单: 希望这份详细的指南能帮助你熟练地在织梦中调用指定栏目的内容!channel
核心属性:
typeid: 指定父栏目ID,如果为空或0,则调用顶级栏目。row: 调用栏目数量。type: 栏目类型。top (顶级栏目), son (子栏目), self (同级栏目)。示例:在栏目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的子栏目)的文章。注意:typeid 和 reid 的值通常是一样的,都指向父栏目。方法2:使用
IN SQL语句(推荐,支持多级子栏目)
GetSonIds() 函数。{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?
.../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() 函数
