dede如何调用图片注释?

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

使用系统自带标签 {dede:field.body/}alt 属性(最简单、最推荐)

这是最直接的方法,直接在文章内容模板中调用,可以获取到图片本身的 alt 属性。

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

适用场景: 在文章内容页(article_article.htm)中,直接显示图片的 alt 文本。

示例代码:

假设你的文章内容中有一张图片: <img src='/uploads/image/2025/a.jpg' alt='这是一张美丽的风景照' />

你可以在模板的任何位置,使用 {dede:field.body/} 来输出整个内容,如果你想单独处理这个 alt 属性,需要结合一些字符串处理函数。

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

直接输出包含 alt 的完整 <img> 标签(最常用)

这是最常见的情况,你不需要单独提取 alt,只需要正常调用文章内容即可。

{dede:field.body/}

这样,浏览器会渲染出 <img> 标签,alt 属性会正常显示。

提取并显示所有图片的 alt 属性(进阶)

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

如果你想在文章内容之外,单独列出所有图片的 alt 文本(用于文章摘要或SEO关键词),你需要使用 preg_match_all 函数来正则匹配。

示例代码(在文章内容页 article_article.htm 中):

{dede:field.body runphp='yes'}
    // 使用正则表达式匹配所有img标签的alt属性
    preg_match_all('/<img\s+[^>]*?alt\s*=\s*[\'"](.*?)[\'"][^>]*?>/i', @me, $matches);
    // $matches[1] 是一个数组,包含了所有匹配到的alt值
    // 将数组用逗号连接成字符串
    $alt_text = implode(',', $matches[1]);
    // 返回处理后的结果
    @me = $alt_text;
{/dede:field.body}

代码解释:

  • {dede:field.body runphp='yes'}:开启PHP执行模式,@me 变量代表 {dede:field.body/} 的原始值(即文章内容)。
  • preg_match_all(...):执行正则表达式匹配。
    • /<img\s+[^>]*?alt\s*=\s*[\'"](.*?)[\'"][^>]*?>/i:这个正则表达式用来查找所有 <img> 标签,并捕获其 alt 属性的值。
    • $matches[1]:存储了所有被捕获的 alt 值。
  • implode(',', $matches[1]):将数组 $matches[1] 中的所有 alt 值用逗号连接成一个字符串。
  • @me = $alt_text;:将处理后的结果赋值给 @me,最终在页面上输出。

通过自定义字段(最灵活、最规范)

这是最规范和灵活的方法,特别适合SEO优化,你可以为每篇文章单独指定一个图片注释,而不是依赖于文章内容中的 alt 属性。

适用场景:

  • 需要为文章设置一个统一的、优化的图片注释。
  • 中可能没有图片,或者图片没有 alt 属性。
  • 在列表页、首页等非内容页调用。

操作步骤:

添加自定义字段

  1. 进入 DedeCMS 后台,点击“核心” -> “内容模型管理”。
  2. 选择你正在使用的模型(文章模型”),点击“更改”。
  3. 在“字段管理”标签页,点击“添加新字段”。
  4. 字段名: img_alt (建议用英文,不能和已有字段重复)
  5. 图片注释
  6. 字段类型: 单行文本
  7. 其他选项: 保持默认即可。
  8. 点击“保存”。
  9. (重要!)点击顶部的“更新缓存”按钮。

在后台填写内容

  1. 进入“新增文档”或“编辑文档”页面。
  2. 你会发现内容表单中多了一个“图片注释”的输入框。
  3. 在这里填入你想要的图片注释,产品A的特写高清图”。

在模板中调用 你可以在任何模板中通过 {dede:field.img_alt/} 来调用这个值。

示例代码(在列表页 list_article.htm 或首页 index.htm 中):

<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>图片注释:{dede:field.img_alt/}</p>

示例代码(在文章内容页 article_article.htm 中):

你可以将它用在 <img> 标签里:

{dede:field.body/}
<!-- 在文章下方显示自定义的图片注释 -->
<div class="custom-alt">
    文章核心图片注释:{dede:field.img_alt/}
</div>

修改 include/helpers/arc.archives.class.php 文件(高级)

如果你想修改 DedeCMS 的核心逻辑,让它在特定标签(如 {dede:img text=''/})中自动提取 alt 属性,可以修改这个文件。此方法风险较高,不推荐普通用户操作,且在升级 DedeCMS 时可能会被覆盖。

适用场景: 开发者需要对系统进行深度定制。

大致思路:

  1. 找到 GetInnerText() 方法。
  2. 修改处理 {dede:img} 标签的逻辑,使其能解析 text 属性并将其作为 alt 属性输出。

由于此方法比较复杂且有一定风险,这里不提供详细代码,如果你有此需求,建议查阅 DedeCMS 的二次开发相关文档或社区。


总结与推荐

方法 优点 缺点 推荐场景
{dede:field.body/} 简单、直接、无需修改任何设置 依赖文章内容中的 img 标签,alt 为空则无法获取;在列表页等地方无法直接使用。 ,特别是当图片 alt 属性已在内容中写好的情况。
自定义字段 灵活、规范、可控性强,不依赖内容,利于SEO 需要手动添加字段和为每篇文章填写数据,增加了一步操作。 所有场景,尤其是SEO优化、列表页、首页调用,以及需要一个统一、优化的图片注释时。
修改核心文件 功能强大,可以改变系统默认行为 风险高、复杂、升级后可能失效,不适合普通用户。 深度二次开发,需要从根本上改变系统行为时。

最终建议:

  • 对于99%的用户,强烈推荐使用【方法二:自定义字段】,这是最专业、最可控的方式,对SEO最有利。
  • 如果只是想在文章内容页里用,用【方法一】就足够了,尤其是配合 runphp 提取 alt 的写法。
  • 尽量避免使用【方法三】,除非你非常清楚你在做什么。
-- 展开阅读全文 --
头像
dede目录权限检测如何正确设置与排查?
« 上一篇 04-18
C语言lastnode是什么?如何实现与使用?
下一篇 » 04-18

相关文章

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

目录[+]