dede arclist循环

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

arclist 标签用于从数据库中获取文章列表,并进行循环输出,通常用于首页、列表页、频道页等需要展示文章摘要的地方,它功能非常强大,参数繁多,可以满足绝大多数列表调用需求。


基本语法

arclist 标签的基本结构如下:

{dede:arclist 
    flag='h' 
    row='10' len='30' 
    orderby='pubdate'
}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:arclist}
  • {dede:arclist ...}: 循环开始标签, 处是各种参数。
  • 循环体内的 HTML 代码,这里是你自定义的列表项样式。
  • {/dede:arclist}: 循环结束标签。

核心参数详解

参数写在 {dede:arclist}{/dede:arclist} 之间,用空格隔开。

基础参数

参数 说明 示例
typeid 指定栏目ID,获取特定栏目的文章,多个ID用逗号隔开,如果不指定,则获取所有栏目的文章(或根据后台设置)。 typeid='1,3' (获取栏目ID为1和3下的文章)
row 循环调用条数,即显示多少篇文章。 row='8' (显示8篇文章)
infolen 摘要长度,文章摘要显示多少个字符。 infolen='100' (摘要最多显示100个字符)
orderby 排序方式,决定文章的排列顺序。 orderby='pubdate' (按发布时间降序)
orderby='hot' (按点击量降序)
orderby='click' (同hot)
orderby='id' (按文章ID降序)
orderby='sortrank' (按文章排序级别降序)
idlist 指定文章ID列表,直接调用指定ID的文章,忽略栏目限制,多个ID用逗号隔开。 idlist='10,22,35' (只调用ID为10, 22, 35的这3篇文章)

过滤与排除参数

参数 说明 示例
flag 特定属性文章,调用带有特定标识的文章,多个标识用逗号隔开。 flag='h' (调用头条文章)
flag='h,c' (调用头条和推荐文章)
常见标识: h(头条), c(推荐), p(图片), f(幻灯)
noflag 排除特定属性文章,与 flag 相反。 noflag='h' (调用除了头条以外的所有文章)
channel 指定模型ID,调用特定内容模型的文章。 channel='1' (调用文章模型)
limit 记录起始偏移量,格式为 "起始条数,显示条数"。limit='0,10' 表示从第1条开始,共显示10条,等同于 row='10'limit='10,10' 表示从第11条开始,显示10条。 limit='5,5' (从第6条开始,显示5条)

高级与特殊参数

参数 说明 示例
subday 调用指定天数内发布的文章 subday='7' (调用最近7天内发布的文章)
keyword 关键词搜索,调用包含指定关键词的文章。 keyword='DedeCMS'
att 附件方式'1' 表示调用有附件的文章。 att='1'
ismember 会员级别'0' 表示调用所有会员可见的文章,'1' 表示调用仅会员可见的文章。 ismember='0'
typeid 的特殊用法 typeid 的值是 顶级栏目ID,并且设置了 reid='yes',则会调用该顶级栏目下的所有子栏目的文章。 typeid='1' reid='yes' (调用顶级栏目ID为1下的所有子栏目的文章)
orderway 排序方向,与 orderby 配合使用。'asc' 为升序,'desc' 为降序(默认)。 orderby='id' orderway='asc' (按文章ID升序排列)

常用字段(field)

{dede:arclist} 循环体内,使用 [field:xxx/] 来调用文章的各个字段。

字段名 说明 示例
[field:title/] <a href="[field:arcurl/]">[field:title/]</a>
[field:arcurl/] 文章链接 <a href="[field:arcurl/]">查看详情</a>
[field:pubdate/] 文章发布时间(原始时间戳) [field:pubdate/] (输出类似:1432345678)
[field:description/] 文章摘要 [field:description/]
[field:click/] 文章点击量 [field:click/] 次点击
[field:litpic/] 文章缩略图 <img src="[field:litpic/]" alt="[field:title/]">
[field:info/] (截取后,与 infolen 配合) [field:info/]
[field:textlink/] <a> 标签形式的标题链接 [field:textlink/] (等同于 <a href="[field:arcurl/]">[field:title/]</a>)
[field:image/] <img> 标签形式的缩略图 [field:image/] (等同于 <img src="[field:litpic/]" alt="[field:title/]">)

字段高级用法:使用函数

可以在字段后加上 function 来调用PHP函数,对字段值进行处理,这是最常用的技巧。

[field:pubdate function="MyDate('Y-m-d', @me)"/]
  • function: 固定写法。
  • MyDate: DedeCMS内置的日期格式化函数。
  • 'Y-m-d': 你想要的日期格式。
  • @me: 系统变量,代表当前字段的原始值(这里是时间戳)。

其他常用函数示例:

  • (替代 titlelen):

    [field:title function='cn_substr(@me, 20)'/]

    cn_substr 是 DedeCMS 的字符截取函数,可以处理中英文混合。

  • 去除HTML标签后截取摘要:

    [field:description function='htmlspecialchars(cn_substr(Html2Text(@me), 100))'/]

    这个例子先去除HTML标签,再截取100个字符,最后转义HTML特殊字符,确保安全显示。


综合实例

实例1:调用“公司新闻”栏目下的最新5条文章,标题30字符,摘要100字符。

假设“公司新闻”的栏目ID是 2

<h3>公司新闻</h3>
<ul class="news-list">
    {dede:arclist typeid='2' row='5' titlelen='30' infolen='100' orderby='pubdate'}
    <li>
        <span class="date">[field:pubdate function="MyDate('Y-m-d', @me)"]</span>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <p class="summary">[field:description/]</p>
    </li>
    {/dede:arclist}
</ul>

实例2:调用首页的“幻灯片”内容(通常是 flag='f' 的文章)。

幻灯片通常有特定的样式,比如带缩略图和标题。

<div class="slider">
    {dede:arclist flag='f' row='5' titlelen='20'}
    <div class="slide-item">
        <a href="[field:arcurl/]" title="[field:title/]">
            <img src="[field:litpic/]" alt="[field:title/]">
            <span class="title">[field:title/]</span>
        </a>
    </div>
    {/dede:arclist}
</div>

实例3:调用所有栏目的“推荐”文章(排除头条),显示10条。

<h3>编辑推荐</h3>
<dl>
    {dede:arclist flag='c' noflag='h' row='10'}
    <dt>
        <a href="[field:arcurl/]"><img src="[field:litpic/]" alt="[field:title/]"></a>
    </dt>
    <dd>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <p>[field:info/]...</p>
    </dd>
    {/dede:arclist}
</dl>

注意事项

  1. 性能考虑arclist 是一个非常灵活的标签,但正因为需要实时查询数据库,如果参数设置不当(例如不指定 typeid 而是调用全站所有文章),会对网站性能产生较大影响。尽量指定 typeid,缩小查询范围。
  2. 模板缓存:DedeCMS 有模板缓存机制,修改了 arclist 标签后,如果页面没有变化,请到后台 “生成” -> “更新主页HTML” 或清理缓存后再查看效果。
  3. 字段可用性:不是所有字段在所有情况下都有值,没有设置摘要的 [field:description/] 将为空,没有上传缩略图的 [field:litpic/] 会调用默认的 /images/defaultpic.gif

希望这份详细的指南能帮助你完全掌握 dede:arclist 的使用!

-- 展开阅读全文 --
头像
dede nginx 伪静态规则如何配置?
« 上一篇 02-03
织梦文章前面加栏目名称
下一篇 » 02-03

相关文章

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

目录[+]