核心思路
- 找到目标二级栏目的ID:这是最关键的一步,你需要在后台“栏目管理”中找到你想要调用的那个二级栏目的ID号。
- 使用
channel或get标签调用栏目本身的信息(如栏目名称、栏目链接等)。 - 使用
arclist标签调用该栏目下的文章列表:通过typeid属性指定你找到的栏目ID。
调用指定ID的二级栏目及其文章列表(最常用)
这是最直接的方法,适用于你知道确切栏目ID的情况。

(图片来源网络,侵删)
第1步:找到栏目ID
- 登录你的DedeCMS后台。
- 点击顶部菜单的“核心” -> “栏目管理”。
- 在栏目列表中,找到你想要调用的那个二级栏目。
- 将鼠标光标悬停在该栏目名称上,浏览器左下角会显示链接,如
dede/catalog_edit.php?cid=XX,其中的XX就是这个栏目的ID,记下这个ID号。
第2步:在模板文件中添加调用代码
假设你要在首页 index.htm 的某个位置调用这个ID为 XX 的二级栏目。
示例:调用栏目名称、链接和文章列表
{dede:channel type='self' typeid='XX'}
<h2><a href="[field:typelink/]">[field:typename/]</a></h2>
{/dede:channel}
<ul>
{dede:arclist typeid='XX' titlelen='30' row='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
</ul>
代码详解:
-
{dede:channel type='self' typeid='XX'}typeid='XX':这里填入你刚刚找到的栏目ID。type='self':表示只调用当前栏目本身(也就是ID为XX的二级栏目),如果不加这个,可能会调用上级栏目或所有同级栏目,造成混乱,推荐加上。[field:typelink/]:输出栏目的完整链接地址。[field:typename/]:输出栏目的名称。
-
{dede:arclist typeid='XX' titlelen='30' row='10'}
(图片来源网络,侵删)typeid='XX':核心参数,指定文章列表所属的栏目ID,同样填入你找到的ID。titlelen='30':截取文章标题的字符长度,30个字符。row='10':获取文章的数量,这里设置为10篇。[field:arcurl/]:输出文章的链接地址。[field:title/]:输出文章的标题。[field:pubdate function="MyDate('Y-m-d', @me)"/]:输出文章的发布日期,并用MyDate函数格式化为年-月-日的格式。
调用当前栏目下的所有二级栏目及其文章列表
如果你想在某个一级栏目页(如“新闻中心”),显示它下面所有二级栏目(如“行业新闻”、“公司动态”)的列表和文章。
场景:
- 一级栏目:“新闻中心” (ID: 5)
- 二级栏目1:“行业新闻” (ID: 6)
- 二级栏目2:“公司动态” (ID: 7)
你希望在“新闻中心”的页面,同时展示“行业新闻”和“公司动态”的内容。
模板代码:
在一级栏目模板文件(如 templets/default/ News/index.htm)中,使用 {dede:channel} 循环遍历所有子栏目,然后在内部嵌套 arclist 调用每个子栏目的文章。
<h1>新闻中心</h1>
{dede:channel type='son' typeid='5'}
<div class="sub-column">
<h3><a href="[field:typelink/]">[field:typename/]</a></h3>
<ul>
{dede:arclist typeid='[field:id]' titlelen='26' row='5'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
</div>
{/dede:channel}
代码详解:
-
{dede:channel type='son' typeid='5'}typeid='5':这里填入一级栏目“新闻中心”的ID。type='son':表示调用该ID栏目的所有直接子栏目(也就是所有二级栏目)。- 这个标签会循环执行,每次循环输出一个二级栏目的信息。
-
{dede:arclist typeid='[field:id]' titlelen='26' row='5'}typeid='[field:id]':这里是技巧所在。[field:id]会获取到外层{dede:channel}循环中当前栏目的ID,也就是说,当循环到“行业新闻”时,[field:id]的值就是6;当循环到“公司动态”时,它的值就是7,这样就实现了动态调用每个子栏目的文章。row='5':每个二级栏目下只显示5篇文章。
常用属性和函数速查表
| 属性/函数 | 说明 | |
|---|---|---|
{dede:channel} |
typeid='ID' |
指定栏目ID |
type='self' |
调用指定栏目本身 | |
type='son' |
调用指定栏目的所有子栏目 | |
[field:typename/] |
栏目名称 | |
[field:typelink/] |
栏目链接 | |
{dede:arclist} |
typeid='ID' |
指定文章所属栏目ID |
row='N' |
调用文章数量 | |
orderby='hot' |
按热度排序 | |
orderway='desc' |
降序排列 | |
| 通用 | [field:id/] |
ID |
[field:title/] |
||
[field:arcurl/] |
文章链接 | |
[field:pubdate/] |
发布时间(时间戳) | |
function="MyDate('Y-m-d', @me)" |
格式化时间戳为日期 |
- 调用单个已知ID的二级栏目:直接使用
typeid='XX'在channel和arclist标签中指定ID。 - 调用一个一级栏目下的所有二级栏目:使用
type='son'的channel标环,并在内部的arclist中用[field:id]动态获取子栏目ID。
希望这些详细的解释和示例能帮助你成功调用指定的二级栏目内容!
