dede调用图片代码怎么写?

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

核心概念:DedeCMS的图片存储

在调用图片之前,你需要了解DedeCMS是如何处理图片的:

dede如何调用图片
(图片来源网络,侵删)
  1. 文章缩略图:这是最常见的方式,在后台发布文章时,可以通过“远程图片采集”或“选择本地图片”等方式,为文章设置一张缩略图,这张图片的地址会被保存在文章表 (dede_archives) 的 litpic 字段中。
  2. 图片:图片是直接作为内容插入到文章正文 (body 字段) 中的,这些图片的地址没有被单独提取出来存储。
  3. 自定义字段图片:你可以为栏目或内容模型添加一个“图片”类型的自定义字段,用来存储特定的图片。

调用图片的方法主要围绕以上三种情况展开。


调用文章缩略图(最常用)

这是调用文章列表页缩略图的标准方法。

在列表页(如 index.htm, list_article.htm)中使用

DedeCMS的列表页通常通过 {dede:list} 标签来循环输出文章,在循环体内,可以使用 field 属性来获取文章的各项信息,包括缩略图。

基本语法:

dede如何调用图片
(图片来源网络,侵删)
{dede:list pagesize='8'}
    <li>
        <a href="[field:arcurl/]">
            <img src="[field:litpic/]" alt="[field:title function='html2text(@me)'/]" />
        </a>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    </li>
{/dede:list}

代码解析:

  • {dede:list pagesize='8'}:开始一个循环,pagesize='8' 表示每页显示8篇文章。
  • [field:litpic/]:这是调用文章缩略图地址的核心标签,它会直接输出 litpic 字段中的图片URL。
  • [field:title/]:调用文章标题。
  • [field:arcurl/]:调用文章的完整访问链接。
  • alt="[field:title function='html2text(@me)'/]":设置图片的 alt 属性,这对SEO很重要。function='html2text(@me)' 是一个函数,用于去除标题中的HTML标签,防止alt属性中出现无效代码。

页(如 article_article.htm)中使用

页,可以直接使用 {dede:field} 标签来调用当前文章的缩略图。

基本语法:

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

代码解析:

  • {dede:field name='litpic'}:调用当前文章的缩略图。
  • {dede:field name='title' function='html2text(@me)'}:调用当前文章的标题作为alt文本。

调用文章内容中的第一张图片

文章没有设置缩略图,但我们希望自动提取文章正文中的第一张图片作为缩略图,这需要使用DedeCMS的自定义函数。

在列表页调用

你需要修改列表页模板文件,使用 GetFirstImg 这个自定义函数。

基本语法:

{dede:list pagesize='8'}
    <li>
        <a href="[field:arcurl/]">
            <!-- 如果文章有litpic,则显示litpic,否则调用正文第一张图 -->
            [field:litpic runphp='yes']
                if(@me != '') {
                    @me = '<img src="' . @me . '" alt="' . stripslashes($this->Fields['title']) . '" />';
                } else {
                    @me = '<img src="' . GetFirstImg($this->Fields['body']) . '" alt="' . stripslashes($this->Fields['title']) . '" />';
                }
            [/field:litpic]
        </a>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    </li>
{/dede:list}

代码解析:

  • [field:litpic runphp='yes']:对 litpic 字段进行PHP代码处理。
  • if(@me != ''):判断 litpic 字段是否为空。
  • @me = '...':如果不为空,就生成一个标准的 <img>
  • GetFirstImg($this->Fields['body']):这是关键函数,它会从文章正文 (body) 中提取第一张图片的地址。注意: 这个函数需要确保在你的系统中被定义,DedeCMS默认会包含这个函数,如果找不到,你需要手动添加。

如何确保 GetFirstImg 函数可用?

如果提示函数未定义,请按以下步骤操作:

  1. 打开 /include/helpers/ 目录下的 archive.helper.php 文件。

  2. 在文件的最后,添加以下函数代码:

    /**
     * 获取正文中的第一张图片路径
     * @param string $body 文章内容
     * @return string 图片路径,如果没有则返回空字符串
     */
    if (!function_exists('GetFirstImg')) {
        function GetFirstImg($body) {
            $preg = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/i";
            preg_match_all($preg, $body, $match);
            if (!empty($match[1])) {
                // 返回第一张图片的地址
                return $match[1][0];
            }
            return ''; // 如果没有找到图片,返回空
        }
    }
  3. 保存文件即可。


调用自定义字段中的图片

模型添加了一个名为 myimage 的图片类型自定义字段,调用方法如下。

在列表页调用

同样在 {dede:list} 循环内使用。

基本语法:

{dede:list pagesize='8'}
    <li>
        <a href="[field:arcurl/]">
            <img src="[field:myimage/]" alt="[field:title function='html2text(@me)'/]" />
        </a>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    </li>
{/dede:list}

代码解析:

  • [field:myimage/]:直接调用名为 myimage 的自定义字段的值。

页调用

基本语法:

<img src="{dede:field name='myimage'/}" alt="{dede:field name='title' function='html2text(@me)'}" />

调用指定栏目或频道的图片

有时你可能想在首页某个位置调用某个特定栏目(产品展示”)的Logo或一张代表图片,这通常通过调用栏目的默认图片来实现。

基本语法:

{dede:channel type='top' row='1'}
    <a href="[field:typelink/]">
        <img src="[field:img/]" alt="[field:typename/]" />
    </a>
{/dede:channel}

代码解析:

  • {dede:channel type='top' row='1'}
    • type='top':表示调用顶级栏目,你可以改成 son(子栏目)、self(本栏目)等。
    • row='1':只调用1个栏目。
  • [field:img/]:调用该栏目在后台设置的“栏目图片”。
  • [field:typelink/]:调用该栏目的链接地址。

总结与对比

调用场景 标签/方法 适用模板 说明
文章缩略图 [field:litpic/] 列表页、内容页 最标准、最常用的方法。
第一张图 GetFirstImg() 函数 列表页、内容页 作为 litpic 的备选方案,更灵活。
自定义字段图片 [field:字段名/] 列表页、内容页 需要先在内容模型中添加图片类型的字段。
栏目图片 [field:img/] 首页、列表页 调用栏目设置的代表图片,常用于导航或推荐。

重要提示

  1. 路径问题:确保你的图片路径是正确的,如果是本地上传,路径通常是 /uploads/allimg/...,如果是外部链接,则直接是完整的 http://https:// 地址。
  2. 缓存问题:修改模板后,如果页面没有变化,请到后台的“生成” -> “更新HTML”中重新生成对应的页面。
  3. 安全与SEO:始终为 <img> 标签设置 alt 属性,这有助于搜索引擎理解图片内容,对SEO非常有益。

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

-- 展开阅读全文 --
头像
织梦入学会的服装有何独特之处?
« 上一篇 04-18
dede本地目录权限如何正确设置?
下一篇 » 04-18
取消
微信二维码
支付宝二维码