织梦内页缩略图如何调取?

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

使用织梦自带的{dede:field.body}标签(最简单,推荐)

这是织梦最核心、最简单的方法,它直接利用了文章编辑器(如ckeditor)的图片自动提取功能。

织梦内页调取缩略图
(图片来源网络,侵删)

原理: 当你在后台发布文章时,在编辑器中插入了图片,并且这张图片是你希望作为缩略图的,那么织梦的{dede:field.body}标签会自动将正文中的第一张图片提取出来,并为你渲染成一个完整的 <img>

使用场景: 只需要一张缩略图,且这张缩略图就是正文中的第一张图。

代码示例:页模板(通常是 article_article.htm)中,直接使用以下代码即可。

{dede:field.body}

优点:

  • 极其简单:无需任何额外设置,一行代码搞定。
  • 自动性强:只要正文有图,就能自动提取。
  • 保持样式:提取的图片会保留在编辑器中设置的尺寸、边框等样式。

缺点:

织梦内页调取缩略图
(图片来源网络,侵删)
  • 不够灵活:只能提取第一张图,无法指定正文中的某一张图。
  • 样式固定:如果正文图片很大,可能会被拉伸,影响页面布局。
  • 依赖编辑器:完全依赖于你在后台编辑器中的操作。

使用自定义字段(最灵活,推荐)

如果你需要更强大的控制,比如指定任意一张图片作为缩略图,或者需要额外的图片描述等,那么使用自定义字段是最好的选择。

操作步骤:

添加自定义字段

  • 登录织梦后台,进入「核心」 -> 「内容模型管理」。
  • 找到你正在使用的文章模型(通常是“文章”),点击后面的「更改字段」。
  • 在字段列表页面,点击「添加新字段」。
  • 字段名称:建议使用英文,smallpic
  • 字段类型:选择「图片(单选)」。
  • 字段长度:可以留空或填写一个较大的数字,如 255。
  • 提示文字:填写“文章缩略图”,方便后台识别。
  • 是否为空:根据需要选择,通常勾选「允许为空」。
  • 保存字段

在后台发布文章时填写

织梦内页调取缩略图
(图片来源网络,侵删)
  • 发布」 -> 「添加文章」。
  • 你会发现文章编辑框下方多出了一个“文章缩略图”的输入框。
  • 点击上传按钮,选择一张你想要的图片作为缩略图,然后点击“确定”。

在模板中调用 你可以在你的文章模板(article_article.htm)中调用这个自定义字段了。

代码示例:

{dede:field.smallpic}

优点:

  • 完全可控:可以自由选择任何图片作为缩略图,不受正文内容限制。
  • 灵活多样:可以结合其他自定义字段,如图片标题、图片描述等。
  • 性能更好:直接调用指定字段,比从正文中解析图片效率更高。

缺点:

  • 需要手动设置:每次发布文章时都需要额外操作。
  • 需要修改模型:对于已经有很多文章的网站,需要为旧文章补充数据。

结合自定义字段与正文图片(推荐方案)

这是一个折中且非常实用的方案,兼顾了灵活性和自动化。

原理: 优先使用自定义字段中的图片,如果自定义字段没有图片,则再从正文中提取第一张图片作为备选。

代码示例:article_article.htm 模板中,你可以这样写:

{dede:field name='smallpic' function='(@me) ? @me : str_replace("/uploads/allimg/", "/uploads/allimg/", GetOneImgUrl(@me, 1))'/}

代码解释:

  • {dede:field name='smallpic'}:首先尝试调用我们自定义的 smallpic 字段。
  • function='...':使用函数对字段值进行处理。
  • (@me) ? @me : ...:这是一个三元运算符。
    • @me(即 smallpic 字段的值)存在(不为空),那么就使用 @me(即自定义的缩略图)。
    • @me 为空,那么就执行冒号后面的代码。
  • str_replace("/uploads/allimg/", "/uploads/allimg/", GetOneImgUrl(@me, 1)):这部分是备选方案。
    • GetOneImgUrl(@me, 1):这是一个织梦内置函数,它的作用是从 @me(这里指代{dede:field.body})中提取第一张图片的地址。1 表示返回完整路径(包含网站域名)。
    • str_replace(...):这里写两个完全相同的路径是为了兼容某些旧版本的织梦,或者确保路径正确,在新版本中,通常可以直接用 GetOneImgUrl({dede:field.body}, 1)

更简洁的写法(推荐): 上面的写法可能有点绕,更清晰的方式是直接调用两个标签:

{dede:field.smallpic function='(@me) ? "<img src=\'".@me."\' />" : "" /}
{dede:field.body function='if(!@me) @me = GetOneImgUrl(@me, 1);'/}
{dede:field.body function='if(@me) @me = "<img src=\'".@me."\' />";'}

最常用和简洁的依然是第一种写法。


通过修改PHP文件(不推荐,除非必要)

这种方法非常灵活,可以完全自定义缩略图的逻辑,但需要对织梦文件进行修改,有升级覆盖的风险,不推荐普通用户使用。

原理: 修改 include/arc.archives.class.php 文件,自定义获取缩略图的函数,然后在模板中调用。

步骤(仅作示例):

  1. 打开 include/arc.archives.class.php 文件。
  2. 找到 GetBody 方法(或类似名称的方法),修改其逻辑,使其能根据你的需求返回缩略图URL。
  3. 在模板中,通过 {dede:field name='body' function='MyCustomThumb(@me)'/} 的方式调用。

缺点:

  • 风险高:修改核心文件,织梦升级时会被覆盖,导致修改丢失。
  • 技术门槛高:需要一定的PHP和织梦底层知识。
  • 维护困难:代码逻辑复杂,不易维护。

总结与建议

方法 优点 缺点 适用场景
{dede:field.body} 最简单,自动化 不灵活,只能取第一张 快速搭建,对缩略图要求不高的博客、资讯站
自定义字段 最灵活,可控性强 需要手动设置,修改模型 电商、图库、设计类等对图片要求高的网站
结合方案 兼顾灵活与自动化 代码稍复杂,需要理解逻辑 强烈推荐,绝大多数商业网站的最佳选择
修改PHP文件 极致灵活,可定制任何逻辑 风险高,技术门槛高,维护难 有特殊需求,且能承担风险的资深开发者

给你的最终建议:

对于绝大多数网站,方法三(结合自定义字段与正文图片) 是最佳实践,它既给了你手动指定缩略图的权利,又能在你忘记指定时,智能地从正文中提取一张图片作为后备,保证了页面的完整性和美观性。

-- 展开阅读全文 --
头像
织梦后台如何安全去除验证码?
« 上一篇 04-28
织梦判断语句如何正确添加?
下一篇 » 04-28
取消
微信二维码
支付宝二维码