arclist 标签功能强大,通过设置不同的参数,可以灵活地实现各种列表的调用需求。

基础语法
arclist 标签的基本语法如下:
{dede:arclist typeid='' row='' col='' titlelen='' orderby=''}
<a href='[field:arcurl/]'>[field:title/]</a>
<p>[field:description function='cn_substr(@me,100)'/]...</p>
<span>[field:pubdate function='MyDate("Y-m-d",@me)'/]</span>
{/dede:arclist}
实现多栏目调用的核心参数
要调用多个栏目的内容,最关键的两个参数是 typeid 和 typeidnot。
typeid 参数:指定要包含的栏目
这个参数用于告诉织梦,你希望调用哪些栏目下的文章。
-
单个栏目:直接填写栏目ID。
(图片来源网络,侵删){dede:arclist typeid='5'}这将只调用栏目ID为5下的文章。
-
多个栏目(逗号分隔):用英文逗号 分隔多个栏目ID。
{dede:arclist typeid='5,7,10'}这将调用栏目ID为5、7、10这三个栏目下的所有文章。
-
包含子栏目(推荐):在栏目ID后面加上 ,表示包含该栏目及其所有一级子栏目,如果需要包含所有层级的子栏目,可以使用
typeid='5,7,10'并配合channelid参数或在后台开启相关选项。
(图片来源网络,侵删){dede:arclist typeid='5|'} <!-- 调用栏目5及其所有一级子栏目 -->注意:要调用所有层级的子栏目,最稳妥的方法是直接列出所有需要的栏目ID(包括父栏目和子栏目),或者使用
channelid参数(见下文)。
typeidnot 参数:指定要排除的栏目
这个参数与 typeid 相反,它用于从所有栏目中排除掉你不希望显示的栏目。
-
排除单个栏目:
{dede:arclist typeidnot='8'}这将调用除了栏目ID为8之外的所有栏目的文章。
-
排除多个栏目(逗号分隔):
{dede:arclist typeidnot='8,9,11'}这将调用除了栏目ID为8、9、11之外的栏目的文章。
常用辅助参数
结合核心参数,以下是一些非常有用的辅助参数,能让你的列表调用更精确、更美观。
| 参数 | 作用 | 示例 |
|---|---|---|
row |
获取文章数量,指定要显示多少条记录。 | row='10' 显示10条文章。 |
col |
分列显示,与 row 配合使用,将结果分成几列显示。 |
row='12' col='3' 会显示12条文章,每行4条(12/3=4)。 |
infolen |
内容简介长度,限制描述文字的长度。 | infolen='100' 描述最多显示100个字符。 |
orderby |
排序方式,按什么字段排序,常用值:click(点击量), pubdate(发布时间), id(文章ID), sortrank(文章排序)。 |
orderby='click' 按点击量从高到低排序。 |
orderway |
排序方向。desc (降序) 或 asc (升序),通常与 orderby 配合使用。 |
orderway='desc' 降序排列。 |
channelid |
指定模型ID,如果栏目下有不同模型(如文章、图片、产品),可以用此参数指定调用哪个模型的文章,文章模型默认为1。 | channelid='1' 只调用文章模型。 |
limit |
记录范围,格式为 起始位置,记录数。limit='0,5' 表示从第0条开始,取5条(即前5条)。 |
limit='5,10' 显示第6到第15条记录。 |
subday |
指定天数内,只调用指定天数内发布的文章。 | subday='7' 只调用最近7天内发布的文章。 |
noflag |
排除特定属性,排除带有特定标识(如“首页推荐”)的文章。 | noflag='h' 排除带有“h”标识的文章。 |
实战案例
假设我们有以下栏目结构:
- 首页
- 新闻中心 (ID: 5)
- 国内新闻 (ID: 6)
- 国际新闻 (ID: 7)
- 产品中心 (ID: 8)
- 产品A (ID: 9)
- 产品B (ID: 10)
案例1:调用“新闻中心”及其所有子栏目的最新5篇文章
<h2>最新新闻</h2>
<ul>
{dede:arclist typeid='5|' row='5' orderby='pubdate' orderway='desc'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function='MyDate("Y-m-d",@me)'/]</span>
</li>
{/dede:arclist}
</ul>
说明:typeid='5|' 实现了调用栏目5及其所有一级子栏目(6和7)的效果。
案例2:调用“国内新闻”和“产品A”的最新文章,各显示3条,共6条
<h2>国内新闻与产品动态</h2>
<ul>
{dede:arclist typeid='6,9' row='6' titlelen='30' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
</ul>
说明:typeid='6,9' 直接指定了两个不相关的栏目ID,织梦会合并这两个栏目下的文章。
案例3:调用除了“产品中心”之外的所有栏目的热门文章
<h2>热门资讯</h2>
<ul>
{dede:arclist typeidnot='8' row='8' orderby='click' orderway='desc'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>阅读:[field:click/]</span>
</li>
{/dede:arclist}
</ul>
说明:使用 typeidnot 可以方便地排除掉某个栏目及其所有子栏目。
案例4:调用“新闻中心”下的文章,但排除“国内新闻”
<h2>国际新闻</h2>
<ul>
{dede:arclist typeid='5' typeidnot='6' row='5' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
</ul>
说明:这个组合比较特殊。typeid='5' 指定了“新闻中心”,typeidnot='6' 又从中排除了“国内新闻”,最终效果就是只调用“国际新闻”下的内容。
重要提示
- 栏目ID获取:你可以在织梦后台的【栏目管理】中,将鼠标悬停在某个栏目上,浏览器状态栏会显示其ID,或者直接点击栏目进入编辑,URL中也能看到
cid=xxx。 - 缓存问题:织梦有模板缓存,修改了
arclist标签后,如果前台页面没有立即更新,请到后台【生成】->【更新HTML】->【更新栏目HTML】或【更新主页HTML】来刷新缓存。 - 性能考虑:
typeid中包含的栏目ID越多,数据库查询的开销就越大,尽量避免在一个页面上调用过多、过深的栏目,如果网站栏目结构非常复杂,建议考虑使用SQL语句直接查询,性能更高。
希望这份详细的指南能帮助你熟练掌握织梦 arclist 的多栏目调用!
