织梦内页缩略图调用方法是什么?

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

使用系统自带的 {dede:field name='litpic' /} 标签(最直接)

这是最简单、最直接的方法,织梦的文章模型中,每个文章都有一个“缩略图”字段,其字段名就是 litpic,在文章内容页模板中,你可以直接使用 {dede:field} 标签来调用它。

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

操作步骤:

  1. 打开你的文章内容页模板文件,通常位于 /templets/default/article_article.htm

  2. 在你希望显示缩略图的位置,插入以下代码:

    {dede:field name='litpic' /}

代码解释:

织梦内页调用缩略图
(图片来源网络,侵删)
  • {dede:field name='litpic' /} 会直接输出当前文章的缩略图路径,/uploads/230101/1-2301011F3020-50.jpg
  • 这个标签本身只是一个路径,为了让它能在浏览器中正确显示为图片,你需要用 <img> 标签将其包裹起来。

优化后的代码(推荐):

为了让图片显示更可控,建议加上 <img> 标签并设置样式。

<img src="{dede:field name='litpic' /}" alt="{dede:field name='title' /}" />
  • src="{dede:field name='litpic' /}":指定图片源为文章缩略图路径。
  • alt="{dede:field name='title' /}":为图片添加 alt 属性,内容为文章标题,这有利于SEO和无障碍访问。

加上CSS样式(可选):

你可以给 <img> 标签加上一个 class,以便通过CSS控制其大小、对齐方式等。

织梦内页调用缩略图
(图片来源网络,侵删)
<img src="{dede:field name='litpic' /}" alt="{dede:field name='title' /}" class="article-thumbnail" />

然后在你的CSS文件(如 /templets/default/style/dedecms.css)中添加:

.article-thumbnail {
    max-width: 200px; /* 限制最大宽度 */
    height: auto;     /* 高度自适应,保持比例 */
    float: left;      /* 左浮动,文字会围绕图片 */
    margin-right: 15px; /* 图片右侧外边距 */
    margin-bottom: 10px; /* 图片底部外边距 */
}

调用文章正文中的第一张图片(更智能)

很多时候,文章作者可能忘记上传缩略图,但正文里一定有图片,我们可以通过自定义函数,实现“如果文章有缩略图则调用缩略图,如果没有,则自动调用正文中的第一张图片”的智能效果。

这种方法更灵活,用户体验更好。

操作步骤:

  1. 创建自定义函数文件:

    • /include/ 目录下新建一个名为 custom.func.php 的文件(如果已存在则直接编辑)。
    • 在这个文件中,添加以下PHP函数代码:
    // 函数名:GetFirstImg
    // 功能:获取文章正文中的第一张图片路径
    function GetFirstImg($body)
    {
        $preg = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/i";
        preg_match_all($preg, $body, $match);
        if (!empty($match[1][0])) {
            // 返回第一张图片的路径
            return $match[1][0];
        }
        // 如果没有找到图片,可以返回一个默认图片路径或者空
        // return '/templets/default/images/default.jpg';
        return '';
    }
  2. 页模板中调用函数:

    • 打开 article_article.htm 模板文件。
    • 在你需要显示图片的位置,使用 {dede:field} 标签结合 function 属性来调用我们刚刚创建的函数。
    {dede:field name='body' function='GetFirstImg(@me)'/}

代码解释:

  • {dede:field name='body'}:获取文章正文的全部内容。
  • function='GetFirstImg(@me)':这是关键。
    • @me 是织梦模板的一个特殊变量,代表当前标签的原始值,在这里就是 body 的全部内容。
    • GetFirstImg(@me) 表示将 body 的内容作为参数,传递给我们自定义的 GetFirstImg 函数。
    • 函数会返回正文第一张图片的路径,然后这个路径就会被输出到模板中。

将方法一和方法二结合(最佳实践):

我们可以结合这两种方法,实现最终的完美效果:优先使用缩略图,如果没有再使用正文第一张图

  1. 确保你的 /include/custom.func.php 文件中有 GetFirstImg 函数。
  2. article_article.htm 模板中,使用织梦的 if 条件语句进行判断。
{dede:field name='litpic' runphp='yes'}
    if (@me != '') {
        // 如果缩略图不为空,则输出img标签
        @me = '<img src="' . @me . '" alt="' . $fields['title'] . '" class="article-thumbnail" />';
    } else {
        // 如果缩略图为空,则调用正文第一张图
        $body = $fields['body'];
        $preg = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/i";
        preg_match_all($preg, $body, $match);
        if (!empty($match[1][0])) {
            @me = '<img src="' . $match[1][0] . '" alt="' . $fields['title'] . '" class="article-thumbnail" />';
        } else {
            // 如果两者都没有,可以输出一个空div或者默认图片
            // @me = '<img src="/templets/default/images/default.jpg" alt="' . $fields['title'] . '" class="article-thumbnail" />';
            @me = '';
        }
    }
{/dede:field}

这段代码功能非常强大,但稍微复杂一些,对于大多数用户来说,方法一已经足够满足基本需求。


使用自定义字段(适用于特殊需求)

如果你的网站对图片有更复杂的需求,比如需要多张图片、图片描述等,可以在后台创建自定义字段。

操作步骤:

  1. 登录织梦后台 -> 核心 -> 内容模型管理

  2. 点击你正在使用的文章模型(通常是“文章”)进行“修改模型”。

  3. 在“字段管理”中,点击“添加新字段”。

  4. 字段名称:填写 my_thumb (英文,不能重复)。

  5. 字段类型:选择“图片(单图)”。

  6. 保存

  7. 发布或修改文章时,你会看到新增的“上传图片”选项,上传后图片会保存在这个新字段里。

  8. article_article.htm 模板中,调用方式和方法一类似:

    {dede:field name='my_thumb' /}

这种方法适用于需要额外图片功能的场景,但对于简单的缩略图调用,略显繁琐。

方法 优点 缺点 适用场景
方法一 最简单,直接,无需额外操作 功能单一,无法处理无缩略图的情况 简单的网站,确保每篇文章都上传了缩略图。
方法二 智能,用户体验好,自动调用正文图片 需要修改文件和添加PHP代码,稍复杂 推荐使用,能极大提升网站的健壮性和用户体验。
方法三 灵活,可扩展性强 配置较繁琐,需要修改模型 需要额外图片功能,如多图、图集等复杂情况。

对于绝大多数用户,我强烈推荐您使用 方法二,或者至少从 方法一 开始,如果您的网站内容量大且更新频繁,方法二的智能取图功能会非常实用。

-- 展开阅读全文 --
头像
dede畅言模块哪里能下载?
« 上一篇 04-28
织梦404页面视频如何提升用户体验?
下一篇 » 04-28
取消
微信二维码
支付宝二维码

目录[+]