dede5.7如何调用自定义图片字段?

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

第一步:在后台添加自定义图片字段

这是最关键的一步,确保字段的类型设置正确。

dede5.7调用自定义图片字段
(图片来源网络,侵删)

进入模型管理

  1. 登录你的 DedeCMS 后台。
  2. 在左侧菜单栏,找到 【核心】 -> 模型管理】
  3. 你会看到系统默认的几个模型,文章”、“图集”等,点击你想要添加字段的模型后面的 【字段管理】
    • 例如:如果你想在普通文章中添加一个产品图片,就点击 【文章】 模型后面的 【字段管理】

添加新字段

  1. 进入字段管理页面后,点击右上角的 【添加新字段】 按钮。

  2. 在弹出的表单中,填写以下关键信息:

    • 字段名称: imgpic (这是数据库中的字段名,建议用英文或拼音,不要用特殊字符)
    • 字段提示: 产品图片 (这是在后台发布文章时,显示给作者看的提示文字)
    • 字段类型: 【选择一项】 -> 【图片(单张)】 (这是最重要的选项!)
    • 默认值: 留空
    • 字段大小: 60 (后台输入框的宽度)
    • 最大长度: 255 (数据库字段最大长度)
    • 是否为空: 0 (不允许为空)
    • 后台调用类型: 【仅允许上传图片】
  3. 勾选 【使字段可以在列表页内容模板中使用】,这个选项非常重要,决定了你能否在前台模板中调用这个字段。

  4. 点击 【保存】 按钮。

    dede5.7调用自定义图片字段
    (图片来源网络,侵删)

至此,后台的自定义图片字段就添加完成了。


第二步:在前台模板中调用字段

添加完字段后,你需要在前台的模板文件中使用 DedeCMS 的标签来调用它,主要有两种调用场景:列表页内容页

在列表页 (list_*.htm) 调用

在列表页,你可能想在文章列表的摘要旁边显示一张缩略图。

假设你的自定义字段名为 imgpic

dede5.7调用自定义图片字段
(图片来源网络,侵删)

方法 A:使用 arclist

arclist 是调用文章列表最常用的标签。

{dede:arclist row='10' titlelen='30'}
  <li>
    <!-- 调用自定义图片字段 -->
    <img src="[field:imgpic/]" alt="[field:title/]" width="100" height="100" />
    <!-- 调用文章标题 -->
    <a href="[field:arcurl/]">[field:title/]</a>
  </li>
{/dede:arclist}

代码解释:

  • [field:imgpic/]: 这就是调用你自定义的 imgpic 字段的核心标签,它会直接输出图片在后台上传后保存的路径。
  • 注意:如果某篇文章没有上传这张图片,[field:imgpic/] 将会输出空,导致 <img> 标签的 src 属性为空,图片无法显示,为了更好的用户体验,建议使用 if 判断。

优化版(带 if 判断):

{dede:arclist row='10' titlelen='30'}
  <li>
    <!-- 使用 if 判断,imgpic 字段不为空,则显示图片 -->
    [field:imgpic runphp='yes']
      if(@me == '') @me = '';
      else @me = '<img src="' . @me . '" alt="' . $this->Fields['title'] . '" width="100" height="100" />';
    [/field:imgpic]
    <a href="[field:arcurl/]">[field:title/]</a>
  </li>
{/dede:arclist}
  • runphp='yes': 表示开启 PHP 解析。
  • if(@me == '') @me = '';: 如果字段值为空,就输出空字符串。
  • else @me = '...';: 如果字段值不为空,就拼接成一个完整的 <img> 标签并赋值给 @me

页 (article_*.htm) 调用

页,调用自定义字段非常简单。

假设你的自定义字段名为 imgpic

方法 A:直接调用

<h1>{dede:field.title/}</h1>
<!-- 调用自定义图片字段 -->
<img src="{dede:field.imgpic/}" alt="{dede:field.title/}" />
<div>
  {dede:field.body/}
</div>

代码解释:

  • {dede:field.imgpic/}: 在内容页中,直接使用 field.字段名 的格式即可调用。

方法 B:使用 if 判断(推荐)

和列表页一样,为了防止图片不存在导致页面错乱,建议加上判断。

<h1>{dede:field.title/}</h1>
<!-- 使用 if 判断 -->
{dede:field.imgpic runphp='yes'}
  if(@me != ''){
    @me = '<img src="' . @me . '" alt="' . $this->Fields['title'] . '" style="max-width:600px;" />';
  }else{
    @me = '<p>暂无图片</p>';
  }
{/dede:field.imgpic}
<div>
  {dede:field.body/}
</div>
  • 这个判断逻辑更完整:如果图片存在,就显示图片;如果不存在,就显示一段文字提示(如“暂无图片”),这样页面会更美观。

常见问题与注意事项

  1. 为什么图片不显示?

    • 字段名错误:检查模板中的 [field:imgpic/]{dede:field.imgpic/} 是否与后台添加的字段名完全一致。
    • 未勾选选项:检查后台添加字段时,是否勾选了 【使字段可以在列表页内容模板中使用】
    • 字段类型错误:确认后台添加的字段类型是 【图片(单张)】
    • 文章未上传图片:去后台编辑对应文章,确保已经上传并保存了该自定义图片字段。
  2. 调用出的图片路径是相对路径,前台无法显示怎么办?

    • 有时直接调用出来的路径是 /uploads/allimg/2025/xx/xxx.jpg 这样的相对路径,在某些情况下可能会找不到图片。
    • 解决方案:使用 cfg_cmspathcfg_basehost 变量来补全路径。

    列表页优化:

    [field:imgpic runphp='yes']
      if(@me != ''){
        @me = '<img src="' . $cfg_cmspath . '/' . @me . '" alt="' . $this->Fields['title'] . '" />';
      }
    [/field:imgpic]

    内容页优化:

    {dede:field.imgpic runphp='yes'}
      if(@me != ''){
        @me = '<img src="' . $cfg_cmspath . '/' . @me . '" alt="' . $this->Fields['title'] . '" />';
      }
    {/dede:field.imgpic}
  3. 需要调用多张图片(图集)怎么办?

    • 如果需要在后台上传多张图片,第一步的字段类型应该选择 【图片(多张)】
    • 调用时需要使用 loop 标签来遍历所有图片。
    • 示例代码
      {dede:field name='imgpic' runphp='yes'}
        if(@me != ''){
          $images = explode(';', @me);
          $count = count($images);
          $output = '';
          for($i=0; $i<$count-1; $i++){
            $output .= '<img src="' . $cfg_cmspath . '/' . $images[$i] . '" alt="" />';
          }
          @me = $output;
        }else{
          @me = '暂无图集';
        }
      {/dede:field.name}

希望这份详细的教程能帮助你成功在 DedeCMS 5.7 中调用自定义图片字段!

-- 展开阅读全文 --
头像
淘宝API对接织梦网,具体怎么操作?
« 上一篇 2025-12-21
C语言CreateProcess如何正确创建进程?
下一篇 » 2025-12-21

相关文章

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