织梦栏目文章列表如何调用?

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

使用官方推荐标签 arclist (最常用、最灵活)

arclist 是织梦功能最强大的列表标签,可以满足绝大多数文章列表的调用需求。

织梦栏目文章列表调用
(图片来源网络,侵删)

基础用法

在需要显示文章列表的模板文件(通常是 list_article.htm)中,使用以下代码:

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

效果: 默认会调用当前栏目的所有文章,按发布时间倒序排列,每篇文章显示标题、链接和发布日期。


arclist 常用参数详解

通过为 arclist 标签添加属性,可以实现非常灵活的调用。

参数名 作用 示例
typeid 指定栏目ID,调用指定栏目的文章,多个ID用逗号隔开。 typeid='1,3' (调用ID为1和3栏目的文章)
row 调用文章的数量。 row='10' (调用10篇文章)
infolen 简介(长度。 infolen='100' (摘要最多显示100个字符)
orderby 排序方式,常用值:pubdate(发布时间), hot(点击量), click(同hot), id(文章ID), sortrank(权重/置顶)。 orderby='hot' (按点击量排序)
orderway 排序方向。desc (降序,默认), asc (升序)。 orderway='asc' (升序排列)
channelid 指定模型ID,默认为1(文章模型)。 channelid='1' (调用文章)
flag 特殊属性。h(头条), c(推荐), p(图片), f(幻灯片),多个用隔开。 flag='h|c' (调用头条和推荐文章)
limit 限制起始位置和数量,格式为 '起始数,数量' limit='5,10' (从第6篇文章开始,调用10篇)
subday 调用指定天数内发布的文章。 subday='7' (调用最近7天内发布的文章)
att 调用带有缩略图的文章。 att='1' (只调用有缩略图的文章)
noatt 调用不带缩略图的文章。 noatt='1' (只调用没有缩略图的文章)

完整代码示例

示例1:调用当前栏目下10篇最新文章,标题长度30,显示摘要和点击量

织梦栏目文章列表调用
(图片来源网络,侵删)
{dede:arclist row='10' titlelen='30' infolen='100'}
    <li>
        <span class="title"><a href="[field:arcurl/]">[field:title/]</a></span>
        <span class="info">([field:pubdate function='MyDate("Y-m-d", @me)'/]) 点击:[field:click/]</span>
        <p class="intro">[field:description function='cn_substr(@me, 100)'/]</p>
    </li>
{/dede:arclist}

示例2:调用指定栏目(ID=2)下的5篇推荐文章,按点击量排序

{dede:arclist typeid='2' row='5' flag='c' orderby='click'}
    <div class="recommend-item">
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </div>
{/dede:arclist}

使用 list 标签 (在列表页调用当前栏目)

list 标签主要用于在*列表页模板(`list_.htm)**中,调用当前栏目的文章列表,它的功能和arclist` 类似,但语法更简洁,因为它默认就是调用当前栏目的内容。

基础用法

list_article.htm 中:

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
    </li>
{/dede:list}

注意: {dede:list} 必须配合分页标签 {dede:pagelist listsize='5' listitem='index,pre,next,end,option'/} 使用。

织梦栏目文章列表调用
(图片来源网络,侵删)

list 标签常用参数

参数名 作用 示例
pagesize 每页显示的文章数量。 pagesize='15' (每页显示15篇)
orderby 排序方式,同 arclist orderby='sortrank' (按权重排序)
orderway 排序方向,同 arclist orderway='asc'

调用子栏目文章

有时候我们想在父栏目页调用其所有子栏目的文章,这需要结合 channelarclist 标签来实现。

获取所有子栏目ID

channel 标签获取当前父栏目下所有子栏目的ID。

{dede:channel type='son' noself='yes'}
    {dede:arclist typeid='[field:id/]' row='5' titlelen='30'}
        <a href="[field:arcurl/]">[field:title/]</a>
    {/dede:arclist}
{/dede:channel}

代码解释:

  • {dede:channel type='son' noself='yes'}: 获取当前栏目的所有子栏目(type='son'),并且不显示当前父栏目本身(noself='yes')。
  • [field:id/]: 在循环中,[field:id/] 代表每一个子栏目的ID。
  • {dede:arclist typeid='[field:id/]'}: 在 channel 循环内部,调用 arclist,并将 typeid 设置为当前子栏目的ID。

效果: 假设栏目A下有子栏目B和C,这段代码会先调用栏目B的5篇文章,然后调用栏目C的5篇文章。


使用SQL直接查询 (最灵活、最强大)

arclistlist 标签无法满足复杂的需求时(需要跨栏目、按特定字段筛选、关联其他表等),可以直接使用SQL语句。

基础SQL调用

{dede:sql sql='SELECT arc.id, arc.title, arc.pubdate, tp.typename
              FROM dede_archives arc
              LEFT JOIN dede_arctype tp ON arc.typeid = tp.id
              WHERE arc.arcrank > -1
              ORDER BY arc.pubdate DESC
              LIMIT 0, 10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>栏目:[field:typename/] | 发布时间:[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
    </li>
{/dede:sql}

代码解释:

  • sql='...': 指定要执行的SQL查询语句。
  • SELECT ...: 选择需要输出的字段,如文章ID、标题、发布时间、栏目名称等。
  • FROM dede_archives: 主表是文章表 dede_archives
  • LEFT JOIN dede_arctype: 关联栏目表 dede_arctype,以获取栏目名称。
  • WHERE arc.arcrank > -1: 筛选条件,只调用已审核通过的文章(arcrank = -1表示未审核或草稿)。
  • ORDER BY ... LIMIT ...: 排序和限制结果数量。
  • [field:arcurl/]: 在SQL标签中,织梦会自动将文章ID转换为文章链接,非常方便。

总结与建议

方法 适用场景 优点 缺点
arclist 绝大多数情况,尤其是首页、推荐页、指定栏目页。 功能强大,参数丰富,官方支持,安全。 对于非常复杂的逻辑可能力不从心。
list 列表页模板中调用当前栏目内容。 语法简洁,专为列表页设计。 只能调用当前栏目,不能跨栏目。
channel+arclist 在父栏目页调用所有子栏目的文章。 结构清晰,易于理解。 需要嵌套标签,代码稍多。
sql 复杂的、非标准的查询需求,如跨栏目、多表关联等。 灵活性最高,可以实现任何数据库操作。 需要SQL知识,有一定安全风险(注意防注入)。

给新手的建议:

  1. 首选 arclist:先尝试用 arclist 的各种参数来解决问题,它能解决90%以上的列表调用需求。
  2. 列表页用 list:在 list_*.htm 模板中,直接使用 list 标签,并记得加上分页。
  3. 遇到复杂需求再学SQL:当 arclist 无法满足时,再考虑使用SQL查询,这是进阶技能。

希望这份详细的教程能帮助您在织梦CMS中灵活地调用各种文章列表!

-- 展开阅读全文 --
头像
织梦cms视频教程从哪开始学?
« 上一篇 04-12
织梦CMS安装教程,新手如何快速完成安装?
下一篇 » 04-12
取消
微信二维码
支付宝二维码

目录[+]