使用 {dede:field.body} 结合 PHP 代码(最常用、最灵活)
这是最经典也是最灵活的方法,适用于任何 DedeCMS 版本,它的原理是先获取包含图集标签的 body 字段内容,然后通过 PHP 代码解析出里面的图片信息。

(图片来源网络,侵删)
场景: 你想在文章内容页(article_article.htm)或者其他需要显示图集详细信息的页面调用。
步骤 1:修改模板文件
在你需要显示图集注释的地方,将原来的图集调用标签(如 {dede:img})替换为以下代码块:
{dede:field.body runphp='yes'}
// 导入必要的解析库
require_once(DEDEINC.'/arc.partview.class.php');
// 实例化一个解析对象
$pv = new PartView();
// 获取当前字段的完整HTML内容
$body = @me;
// 如果内容为空,则不执行任何操作
if(empty($body)) {
@me = '';
return;
}
// 解析图集标签,获取图片数组
// $images = $pv->Getimgs($body, 0, 0);
// 注意:在新版本中,推荐使用下面的方式,它更稳定
$images = array();
preg_match_all("/<img[^>]*src=['\"]([^'\"]+)[^>]*alt=['\"]([^'\"]*)[^>]*>/i", $body, $matches);
for ($i=0; $i<count($matches[1]); $i++) {
$images[$i]['src'] = $matches[1][$i];
$images[$i]['alt'] = $matches[2][$i];
// 如果你想获取图片描述(需要在后台图集管理里设置),需要更复杂的解析
// 这里我们先以获取 alt 为主
}
// --- 在这里开始循环输出图片和注释 ---
$html_output = '';
if(!empty($images)) {
foreach($images as $img) {
// $img['src'] 是图片地址
// $img['alt'] 是图片注释
// 示例:输出一个带有注释的图片列表
$html_output .= '<div class="gallery-item">';
$html_output .= '<img src="' . $img['src'] . '" alt="' . $img['alt'] . '" />';
$html_output .= '<p class="image-caption">' . $img['alt'] . '</p>'; // 用 p 标签显示注释
$html_output .= '</div>';
}
}
// 将最终生成的HTML代码赋值给 @me,替换掉原始的 {dede:field.body} 标签
@me = $html_output;
{/dede:field.body}
代码解析:
{dede:field.body runphp='yes'}: 获取文章的body字段内容,并允许在其中执行 PHP 代码。preg_match_all(...): 这是一段强大的正则表达式,它会扫描body中的所有<img>标签,并提取出src(图片地址) 和alt(注释) 属性的值。foreach($images as $img): 循环遍历解析出来的所有图片。$img['src']和$img['alt']: 分别代表当前图片的地址和注释。@me = $html_output;: 这是最关键的一步,它将你在 PHP 代码中拼接好的 HTML 字符串,最终输出到模板中。
步骤 2:后台设置
确保你在后台发布文章时,图集中的图片都填写了 “图片alt” 这个字段,这个字段的值就会被提取出来作为注释。

(图片来源网络,侵删)
使用 {dede:img} 标签的 textlink 属性(简单直接)
如果你只是想在图片下方显示一个简单的文本链接,并且这个链接的文字就是图片的注释,{dede:img} 标签自带的 textlink 属性非常方便。
场景: 在文章内容页调用图集,并显示图片标题作为链接。
模板代码示例:
{dede:img textlink='yes' imgwidth='120' imgheight='90'}
<a href='[field:src runphp='yes'] @me = str_replace("/uploads/", "/uploads/big/", @me); [/field:src]' title="[field:alt/]">
<img src='[field:src/]' alt='[field:alt/]' width='120' height='90' />
</a>
{/dede:img}
代码解析:
{dede:img textlink='yes'}:textlink='yes'是核心,它会自动将图片的注释(alt值)作为链接的文本。[field:src/]: 调用图片地址。[field:alt/]: 调用图片注释,我们手动将其写在了<a>标签的title属性和<img>标签的alt属性中,这样更规范。runphp='yes': 这里我们用它来做一个简单的例子,将小图路径替换成大图路径,实现点击缩略图查看大图。
注意: 这种方法虽然简单,但定制性不如第一种方法,它主要用于生成一个包含注释的链接。

(图片来源网络,侵删)
使用自定义模型(适用于图集为独立内容的情况)
如果你的图集不是作为文章内容的一部分,而是使用了 DedeCMS 的“图集”模型作为独立栏目发布,那么调用方式就完全不同了。
场景: 在一个专门发布图集的栏目页或图集内容页调用。
页(album_article.htm)调用:
在图集模型的内容页,DedeCMS 提供了专门的标签来调用图集数据。
{dede:field name='imgurls' alt='图片描述'}
<dt>
<a href='[field:src runphp='yes'] @me = str_replace("/uploads/", "/uploads/big/", @me); [/field:src]' title="[field:text/]">
<img src='[field:imgsrc/]' alt='[field:text/]' width='120' height='90' />
</a>
</dt>
<dd>
[field:text/]
</dd>
{/dede:field}
代码解析:
{dede:field name='imgurls'}: 这是调用图集字段的核心标签。[field:imgsrc/]: 调用图片的缩略图地址。[field:src/]: 调用原图地址。[field:text/]: 这就是图片的注释/描述字段! 在后台发布图集时,为每张图片填写的“描述”文字,就会通过这个标签调用出来。
总结与对比
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
PHP解析{dede:field.body} |
图集嵌套在文章内容中 | 最灵活,可以完全自定义HTML输出,功能强大 | 代码稍复杂,需要一定的PHP基础 |
{dede:img}的textlink |
图集嵌套在文章内容中,需要简单文本链接 | 非常简单,标签自带功能,无需写PHP | 定制性差,只能生成特定格式的链接 |
调用{dede:field.imgurls} |
图集作为独立模型发布 | 标签专用,调用规范,直接获取后台填写的描述 | 仅限独立图集模型,不适用于文章内容中的图集 |
给你的建议:
- 如果你的图集是文章的一部分,首选 方法一,它最能满足你自定义样式的需求。
- 如果你只是想快速显示一个带注释的图片列表,且不介意样式比较固定,可以用 方法二。
- 如果你的网站有专门的图集栏目,并且图集是独立发布的,请使用 方法三,这是最标准、最正确的做法。
希望这些详细的解释能帮助你成功调用到图集的注释!
