dede图集注释如何调用?

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

使用 {dede:field.body} 结合 PHP 代码(最常用、最灵活)

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

dede 调用图集注释
(图片来源网络,侵删)

场景: 你想在文章内容页(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}

代码解析:

  1. {dede:field.body runphp='yes'}: 获取文章的 body 字段内容,并允许在其中执行 PHP 代码。
  2. preg_match_all(...): 这是一段强大的正则表达式,它会扫描 body 中的所有 <img> 标签,并提取出 src (图片地址) 和 alt (注释) 属性的值。
  3. foreach($images as $img): 循环遍历解析出来的所有图片。
  4. $img['src']$img['alt']: 分别代表当前图片的地址和注释。
  5. @me = $html_output;: 这是最关键的一步,它将你在 PHP 代码中拼接好的 HTML 字符串,最终输出到模板中。

步骤 2:后台设置

确保你在后台发布文章时,图集中的图片都填写了 “图片alt” 这个字段,这个字段的值就会被提取出来作为注释。

dede 调用图集注释
(图片来源网络,侵删)

使用 {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': 这里我们用它来做一个简单的例子,将小图路径替换成大图路径,实现点击缩略图查看大图。

注意: 这种方法虽然简单,但定制性不如第一种方法,它主要用于生成一个包含注释的链接。

dede 调用图集注释
(图片来源网络,侵删)

使用自定义模型(适用于图集为独立内容的情况)

如果你的图集不是作为文章内容的一部分,而是使用了 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} 图集作为独立模型发布 标签专用,调用规范,直接获取后台填写的描述 仅限独立图集模型,不适用于文章内容中的图集

给你的建议:

  1. 如果你的图集是文章的一部分,首选 方法一,它最能满足你自定义样式的需求。
  2. 如果你只是想快速显示一个带注释的图片列表,且不介意样式比较固定,可以用 方法二
  3. 如果你的网站有专门的图集栏目,并且图集是独立发布的,请使用 方法三,这是最标准、最正确的做法。

希望这些详细的解释能帮助你成功调用到图集的注释!

-- 展开阅读全文 --
头像
织梦如何查授权状态?
« 上一篇 前天
C语言s=1+2+3+...+n如何实现?
下一篇 » 前天

相关文章

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

目录[+]