dede如何调用图片?

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

基础调用:文章内容中的第一张图

这是最常见的需求,比如在列表页调用文章缩略图,如果没有缩略图,则自动调用文章正文中的第一张图片。

dede怎么调用图片
(图片来源网络,侵删)

使用 GetOneImgUrl 函数(推荐)

这个函数专门用于获取文章内容中的第一张图片,非常方便。

语法:

{dede:field name='body' function='GetOneImgUrl(@me)'/}

参数说明:

  • @me:代表当前的字段值,在这里就是文章的 body
  • function='GetOneImgUrl(@me)':对 body 字段内容执行 GetOneImgUrl 函数处理。

示例(在列表页 list_article.htm 中):

dede怎么调用图片
(图片来源网络,侵删)
<li>
    <a href="[field:arcurl/]">
        <!-- 如果没有缩略图,则调用正文第一张图;有缩略图则显示缩略图 -->
        <img src="{dede:field name='litpic'/}" onerror="this.src='{dede:field name='body' function='str_replace('/uploads/', '/uploads/', GetOneImgUrl(@me))'/}'" alt="[field:title function='html2text(@me)'/]" />
    </a>
    <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
</li>

代码解析:

  • onerror="this.src='...'":这是一个非常实用的技巧,当 <img> 标签的 src 指向的图片加载失败时(比如缩略图为空),就会自动执行 onerror 里的代码,去调用正文中的第一张图。
  • str_replace('/uploads/', '/uploads/', GetOneImgUrl(@me)):这里加了一个 str_replace 是为了兼容某些环境下图片路径可能不完整的问题,确保能正确找到图片,在大多数情况下,可以直接使用 GetOneImgUrl(@me)

调用缩略图

调用文章后台设置的缩略图是最直接的方式。

调用缩略图路径

直接使用 litpic 字段即可。

语法:

dede怎么调用图片
(图片来源网络,侵删)
[field:litpic/]

示例:

<img src="[field:litpic/]" alt="[field:title function='html2text(@me)'/]" />

调用缩略图并自动补全域名

litpic 返回的是相对路径(如 /uploads/2025/10/xxx.jpg),直接使用可能在某些页面(如首页)无法显示,需要补全网站域名。

语法:

[field:litpic function='str_replace("..", "", "@me")'/]

或者使用更稳妥的:

{dede:global name='cfg_basehost'/}[field:litpic/]

示例:

<img src="{dede:global name='cfg_basehost'/}[field:litpic/]" alt="[field:title function='html2text(@me)'/]" />

代码解析:

  • {dede:global name='cfg_basehost'/}:这是DedeCMS的全局变量,会输出你网站的基础域名,如 http://www.yoursite.com
  • [field:litpic/]:是相对路径,两者拼接起来就是完整的图片URL。

调用自定义字段中的图片

如果你的文章模型中添加了自定义字段来存储图片,调用方法也很简单。

假设你添加了一个名为 product_img 的自定义字段,类型为“图片”。

调用单张图片

语法:

[field:product_img/]

同样,建议补全域名:

{dede:global name='cfg_basehost'/}[field:product_img/]

调用多张图片(图集)

如果自定义字段类型是“多图”,它存储的值通常是 图片1|图片2|图片3 这样的格式,你需要将其分割成数组,然后循环输出。

语法:

{dede:field name='product_img' function='explode("|", @me)'}
    <img src="{dede:global name='cfg_basehost'/}[field:autotemplet/]" alt="产品图片" />
{/dede:field}

代码解析:

  • function='explode("|", @me)':将 product_img 字段的值按 分割成一个数组。
  • [field:autotemplet/]:在循环中,这个标签会自动指向数组中的每一个元素(即每张图片的路径)。

调用栏目缩略图

调用当前栏目的缩略图,通常用于频道页或列表页的头部。

语法:

{dede:field name='typedir'/}   // 调用栏目目录(带域名)
{dede:field.seotext/}           // 调用栏目简介(可能包含图片)
{dede:global name='cfg_basehost'/}{dede:field name='typedir'/}  // 组合使用

更直接的方法是调用栏目的 typelitpic 字段,但这个字段默认不存在,你需要:

  1. dede_arctype 表中添加一个 typelitpic 字段。
  2. 修改栏目编辑模板,让用户可以上传栏目缩略图。
  3. 在模板中调用:
    {dede:global name='cfg_basehost'/}[field:typelitpic/]

调用外部图片(广告、友情链接等)

DedeCMS有专门的自定义标记来调用这些内容。

调用广告图片

在后台“广告管理”中添加广告,然后在模板中调用。

语法:

{dede:myad name='广告位标识'/}

示例: 假设你在后台添加了一个广告位,标识为 topbanner,那么在模板中写:

{dede:myad name='topbanner'/}

调用友情链接Logo

语法:

{dede:flink type='image'/}

参数:

  • type='image':只显示带Logo的链接。
  • row='10':显示10个,len='24'`:标题长度限制为24个字符。

示例:

<div class="friend-links">
    <h3>友情链接</h3>
    <ul>
        {dede:flink type='image' row='10' titlelen='24'}
            <li><a href="[field:url/]" target="_blank" title="[field:name/]">[field:name/]</a></li>
        {/dede:flink}
    </ul>
</div>

综合实例:一个常见的列表页布局

这是一个结合了多种调用技巧的列表页 list_article.htm 示例。

<ul class="article-list">
    {dede:list pagesize='10'}
    <li class="clear">
        <!-- 左侧图片:优先调用缩略图,失败则调用正文第一张图 -->
        <div class="img-box">
            <a href="[field:arcurl/]">
                <img src="{dede:global name='cfg_basehost'/}[field:litpic/]" 
                     onerror="this.src='{dede:global name='cfg_basehost/'}{dede:field name='body' function='str_replace(&quot;/../&quot;, &quot;&quot;, GetOneImgUrl(@me))'/}'" 
                     alt="[field:title function='html2text(@me)'/]" />
            </a>
        </div>
        <!-- 右侧标题、简介等信息 -->
        <div class="text-box">
            <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
            <p class="desc">[field:description function='cn_substr(@me, 120)'/]...</p>
            <div class="info">
                <span class="date">[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
                <span class="views">阅读([field:click/])</span>
                <span class="author">作者:[field:writer/]</span>
            </div>
        </div>
    </li>
    {/dede:list}
</ul>
<!-- 分页 -->
<div class="page-nav">
    {dede:pagelist listsize='4'/}
</div>
调用场景 标签/代码 说明
调用正文第一张图 {dede:field name='body' function='GetOneImgUrl(@me)'/} 最常用,兼容性好,建议配合 onerror 使用。
调用文章缩略图 [field:litpic/] 直接调用后台设置的缩略图。
补全图片域名 {dede:global name='cfg_basehost'/}[field:litpic/] 解决相对路径在不同页面显示问题。
调用自定义单图 [field:自定义字段名/] 调用模型中添加的单图字段。
调用自定义多图 {dede:field name='字段名' function='explode("|", @me)'}...{/dede:field} 循环输出多图字段中的图片。
调用广告图 {dede:myad name='广告位标识'/} 调用后台广告管理中的图片。
调用友情链接Logo {dede:flink type='image'/} 调用友情链接中的Logo图片。

希望这份详细的指南能帮助你完全掌握在DedeCMS中调用图片的各种方法!

-- 展开阅读全文 --
头像
织梦模板如何修改首页布局?
« 上一篇 04-13
dede封面模板如何正确调用?
下一篇 » 04-13
取消
微信二维码
支付宝二维码