dede arclist如何调取图片?

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

arclist 是 DedeCMS 最核心、最常用的列表标签,功能非常强大,调用图片主要通过其属性 litpic(缩略图)和 body)来实现。

dede arclist 调图片
(图片来源网络,侵删)

调用文章缩略图 (litpic)

这是最常见、最直接的方法,如果你的文章在发布时已经上传了缩略图,直接调用 litpic 即可。

基础语法

{dede:arclist typeid='' row='' col='' titlelen='' orderby=''}
    <a href="[field:arcurl/]" title="[field:title/]">
        <img src="[field:litpic/]" alt="[field:title/]" />
    </a>
    <h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
    <p>[field:description function='cn_substr(@me,100)'/]...</p>
{/dede:arclist}

参数说明

  • typeid='': 指定栏目ID,如果你想只调用某个特定栏目下的文章,必须填写此参数。typeid='5',如果留空,则从所有栏目中调用。
  • row='': 调用条数row='6' 表示调用6篇文章。
  • col='': 分列数col='3' 表示将调用的文章分3列显示,通常配合 tablewidth 使用。
  • titlelen='': 标题长度titlelen='20' 表示标题最多显示20个汉字。
  • orderby='': 排序方式
    • orderby='hot'orderby='click':按点击量排序。
    • orderby='pubdate':按发布时间排序(默认)。
    • orderby='sortrank':按后台文章排序号排序。
  • imgwidth='': 缩略图宽度imgwidth='200'
  • imgheight='': 缩略图高度imgheight='150'
  • type='image': 仅显示有缩略图的文章,这个参数非常有用,可以避免列表中出现没有图片的文章。
  • channelid='': 指定模型ID,默认为文章模型(ID=1),如果是图集等,需要指定。

字段说明

  • [field:litpic/]: 文章缩略图的地址,这是调用图片的核心字段。
  • [field:arcurl/]: 文章的链接地址
  • [field:title/]: 。
  • [field:description/]: 文章的摘要,通常配合 function='cn_substr(@me,100)' 来截取摘要的前100个字符。

调用文章内容中的第一张图

如果你的文章没有上传缩略图,但希望在列表中显示文章正文(body)里的第一张图片,可以使用 GetOneImgUrl 函数。

基础语法

{dede:arclist typeid='' row='6'}
    <a href="[field:arcurl/]" title="[field:title/]">
        <img src="[field:body function='GetOneImgUrl(@me)'/]" alt="[field:title/]" />
    </a>
    <h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
{/dede:arclist}

语法详解

  • [field:body/]: 代表文章的完整内容。
  • function='GetOneImgUrl(@me)': 这是关键。
    • @me:代表 field:body 这个字段的原始值(即文章内容)。
    • GetOneImgUrl():这是 DedeCMS 的一个内置函数,它会从传入的字符串(即文章内容)中提取出第一张图片的地址。
    • 如果文章内容中没有图片,这个函数会返回一个空字符串,<img> 标签将没有 src 属性,可能导致页面显示异常,通常建议结合 type='image' 使用,或者用 if 判断。

进阶用法:判断图片是否存在

为了更健壮,我们可以使用 if 标签来判断 litpic 是否存在,如果存在则调用 litpic,否则调用正文第一张图。

{dede:arclist typeid='5' row='6' type='image'}
    <li>
        <!-- 先判断是否有缩略图,有则调用缩略图,没有则调用正文第一张图 -->
        [field:array runphp='yes']
            if(@me['litpic'] != '') {
                @me = '<a href="'.@me['arcurl'].'" title="'.@me['title'].'"><img src="'.@me['litpic'].'" alt="'.@me['title'].'" /></a>';
            } else {
                @me = '<a href="'.@me['arcurl'].'" title="'.@me['title'].'"><img src="'.GetOneImgUrl(@me['body']).'" alt="'.@me['title'].'" /></a>';
            }
        [/field:array]
        <h4><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h4>
        <span>[field:pubdate function='MyDate("Y-m-d",@me)'/]</span>
    </li>
{/dede:arclist}

代码解释:

dede arclist 调图片
(图片来源网络,侵删)
  • type='image' 确保我们只处理有图片的文章(无论是缩略图还是正文图)。
  • [field:array runphp='yes']...[/field:array] 允许我们在 PHP 代码中访问当前文章的所有字段,如 @me['litpic'], @me['arcurl'] 等。
  • if...else... 逻辑清晰,优先显示缩略图,没有再显示正文图。

调用图集中的图片

如果你的文章是“图集”模型,那么调用方式会有所不同,需要调用图集中的图片列表。

基础语法

{dede:arclist typeid='5' row='4' channelid='2'}
    <a href="[field:arcurl/]" title="[field:title/]">
        <!-- 调用图集中的第一张图片 -->
        <img src="[field:imgurl/]" alt="[field:title/]" />
    </a>
{/dede:arclist}

参数说明

  • channelid='2': 关键参数,必须指定为图集模型的ID,通常是 2,如果你不确定,可以去后台“频道模型”-“内容模型管理”中查看图集的ID。
  • [field:imgurl/]: 图集中第一张图片的地址,这是调用图集图片的核心字段。

常见问题与解决方案

调用出来的图片是空白或显示默认图片

  • 原因: 文章没有上传缩略图。
  • 解决方案:
    1. 方法一(推荐): 在 arclist 标签中加入 type='image',这样只调用有缩略图的文章。
      {dede:arclist typeid='5' row='6' type='image'}
          ...
      {/dede:arclist}
    2. 方法二: 设置一个默认图片,当 litpic 为空时,显示一个默认的图片地址。
      <img src="[field:litpic function='(@me ? @me : "/images/default.jpg")'/]" alt="[field:title/]" />

      这里的 /images/default.jpg 需要替换成你自己的默认图片路径。

调用正文第一张图时,图片尺寸不一,样式混乱

  • 原因: 从正文中提取的图片是原图,尺寸可能很大或很小。
  • 解决方案: 使用 DedeCMS 的图片裁剪函数 ResizeImage
    {dede:arclist typeid='5' row='6'}
        <img src="[field:body function='ResizeImage(@me, 200, 150)'/]" alt="[field:title/]" />
    {/dede:arclist}

    ResizeImage 函数说明:

    • ResizeImage(原始字符串, 宽度, 高度)
    • 它会从原文中提取第一张图,并强制将其缩放到你指定的 200x150 尺寸,同时保持图片比例不变(可能会在两侧或上下留白)。
    • 这个函数非常实用,可以统一列表中图片的显示尺寸。
调用目标 核心标签/函数 适用场景
文章缩略图 [field:litpic/] 文章已上传缩略图,最常用。
文章正文第一张图 [field:body function='GetOneImgUrl(@me)'/] 文章未上传缩略图,但希望列表有图。
图集第一张图 [field:imgurl/] + channelid='2' 调用图集模型的文章。
统一图片尺寸 function='ResizeImage(@me, w, h)' 控制调用出的图片显示为固定宽高。
过滤无图文章 type='image' 确保列表中的每篇文章都至少有一张图。

希望这份详细的指南能帮助你熟练掌握 DedeCMS arclist 标签的图片调用!

-- 展开阅读全文 --
头像
织梦html5手机模板如何适配多设备?
« 上一篇 2025-12-24
c语言职工信息管理系统 课程设计
下一篇 » 2025-12-24

相关文章

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

目录[+]