在织梦里,“图片集合”通常指的是文章内容字段(body)中使用 {dede:img} 标签插入的一组或多张图片,调用它们的核心思路是:

- 获取文章内容:首先获取包含图片集合的文章完整内容。
- 使用特定标签解析:使用织梦专门用于解析图片集合的标签,从内容中提取出图片信息。
- 循环输出:将解析出的图片信息进行循环,并按照你的需求(如缩略图、原图、图片描述等)进行输出。
在文章列表页调用(最常用)
这是最常见的场景,比如在首页、列表页或文章页的摘要部分,调用该文章包含的图片集合,做成一个图片轮播或小图集展示。
假设你想在文章列表页(arclist.htm)的摘要部分,每篇文章调用其包含的最多3张图片。
步骤 1:修改列表模板
打开你的列表模板文件,/templets/default/list_article.htm,找到循环输出文章列表的 {dede:arclist} 标签内部。

在需要显示图片集合的地方,加入以下代码:
{dede:arclist row='10' titlelen='40'}
<li>
<!-- 1. 显示文章标题 -->
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 2. 调用图片集合 -->
<div class="imglist">
{dede:img text=''}
<a href="[field:arcurl/]"><img src="[field:src/]" alt="[field:text/]" /></a>
{/dede:img}
</div>
<!-- 3. 显示文章摘要 -->
[field:description function='cn_substr(@me,100)'/]...
</li>
{/dede:arclist}
代码解析:
{dede:arilogy row='10' ...}: 这是标准的文章列表循环标签。{dede:img text=''}: 这是核心标签,它必须在{dede:arclist}的内部使用,用于解析当前文章内容里的图片集合。text='': 这个属性用于获取图片的描述文字,并赋值给[field:text/]。- 它会循环遍历文章中所有的
{dede:img}
[field:src/]: 非常重要,这个字段代表图片的原始地址(原图),如果你想显示缩略图,应该使用[field:imgsrc/]。[field:text/]: 获取{dede:img}标签中设置的text属性值,也就是图片的描述。[field:arcurl/]: 获取文章的链接,这里我们把图片链接指向文章详情页。
进阶:限制显示图片数量
默认情况下,{dede:img} 会调用文章中所有的图片,如果你只想显示前2张或前3张,可以使用 row 属性:

{dede:img row='2' text=''}
<a href="[field:arcurl/]"><img src="[field:src/]" alt="[field:text/]" /></a>
{/dede:img}
这样,每篇文章最多只会显示2张图片。
页调用
在文章详情页(article_article.htm)调用图片集合,通常用于制作大图集展示。
步骤 1:修改文章内容模板
打开文章详情模板文件,/templets/default/article_article.htm。
在合适的位置(比如标题下方、内容上方)加入以下代码:
<h1>[field:title/]</h1>
<!-- 调用文章中的图片集合,并做成一个列表 -->
<div class="article-gallery">
<h3>文章图集</h3>
<ul>
{dede:img text=''}
<li>
<a href="[field:src/]" title="[field:text/]">
<img src="[field:imgsrc/]" alt="[field:text/]" />
</a>
<p class="img-description">[field:text/]</p>
</li>
{/dede:img}
</ul>
</div>
<!-- 原文内容 -->
<div class="article-content">
[field:body/]
</div>
代码解析:
- 这里的
{dede:img}用法和列表页一样,因为它在{dede:field}的上下文中,默认会解析当前文章的内容。 [field:src/]作为<a>标签的链接,用户点击可以查看高清大图。[field:imgsrc/]作为<img>标签的src,显示缩略图,加载更快。[field:text/]显示图片的描述文字。
使用自定义SQL调用(灵活但需谨慎)
如果你想不受限于文章列表,比如在首页某个特定位置调用全站最新的带图集的文章,你可以使用自定义SQL查询。
步骤 1:编写SQL
你需要查询 dede_archives 表获取文章ID,然后根据ID去 dede_addonarticle 表(如果文章模型是“文章”)获取内容,最后再用 {dede:img} 标签解析。
注意:直接操作数据库有风险,请务必先备份!
示例代码(在首页模板 index.htm 中使用):
{dede:sql sql='
SELECT a.id, a.title, a.arcurl, b.body
FROM dede_archives AS a
LEFT JOIN dede_addonarticle AS b ON a.id = b.aid
WHERE b.body LIKE "{dede:img}%"
ORDER BY a.pubdate DESC
LIMIT 5
'}
<div class="featured-article">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<div class="gallery">
{dede:img text='' row='1'}
<a href="[field:arcurl/]"><img src="[field:imgsrc/]" alt="[field:text/]" /></a>
{/dede:img}
</div>
</div>
{/dede:sql}
代码解析:
dede:sql: 执行自定义SQL查询。WHERE b.body LIKE "{dede:img}%": 这是一个小技巧,用来筛选出内容中包含图片集合的文章,提高查询效率。LIMIT 5: 只调用最新的5篇文章。- 在
{dede:sql}循环内部,我们同样使用了{dede:img}来解析body字段中的图片,这里的body是我们通过SQL查询出来的。
常见问题与注意事项 (FAQ)
Q1: 为什么我调用出来的图片是乱码或者不显示? A1: 最常见的原因是:
- 标签位置错误:确保
{dede:img}标签在{dede:arclist}或{dede:field}的内部。 - 文章中没有图片集合:确认你调用的文章内容里确实使用了
{dede:img}标签插入了图片,而不是直接用<img>- 路径问题:检查
[field:src/]或[field:imgsrc/]输出的路径是否正确。 - 路径问题:检查
Q2: [field:src/] 和 [field:imgsrc/] 有什么区别?
[field:src/]:调用的是 {dede:img} 标签中原始的图片地址,如果你在后台插入时选择的是原图,它就是原图;如果你选择的是缩略图,它就是缩略图。[field:imgsrc/]:调用的是 系统自动生成的缩略图地址,无论你后台插入时选择什么,它都会返回一个经过缩略图处理的图片路径(通常在/uploads/allimg/目录下)。推荐在列表页使用[field:imgsrc/]以提高加载速度。
Q3: 如何给调用的图片添加CSS样式? A3: 直接在HTML标签里添加即可。
{dede:img row='3' text=''}
<img src="[field:imgsrc/]" alt="[field:text/]" class="my-custom-class" />
{/dede:img}
然后在你的CSS文件中定义 .my-custom-class 的样式。
| 场景 | 核心标签 | 位置 | 用途 |
|---|---|---|---|
| 文章列表页 | {dede:img} |
在 {dede:arclist} 内部 |
调用多篇文章的图片集合,用于摘要展示。 |
| 页 | {dede:img} |
在 {dede:field} 或任意位置 |
调用单篇文章的图片集合,用于图集展示。 |
| 自定义位置 | {dede:img} |
在 {dede:sql} 内部 |
灵活调用任何符合条件的文章图片集合。 |
希望这份详细的教程能帮助你完全掌握织梦调用图片集合的方法!
