如何在DedeCMS列表页中实现有图则调用缩略图,无图则留空?

DedeCMS列表页,使用以下代码调用缩略图,若无图则留空:,,“html,{dede:list pagesize='10'}, [field:textrun function="GetTopImage(@me)"/],{/dede:list},

本文将介绍如何在DedeCMS(织梦内容管理系统)的列表页中调用缩略图,如果文章没有图片则留空,我们将从以下几个方面进行讲解:

1、修改列表模板文件

2、编写自定义函数

3、在列表模板中调用自定义函数

4、相关问答FAQs

修改列表模板文件

我们需要找到并编辑列表模板文件,通常情况下,这个文件位于/templets/default/list_article_index.htm,如果你使用的是其他模板,请根据实际情况找到对应的文件。

编写自定义函数

我们需要在/include/arc.listview.class.php文件中编写一个自定义函数,打开该文件,找到GetSpecial()函数,然后在其下方添加如下代码:

function GetThumbnail($id, $width = '', $height = '', $is_watermark = false) {
    global $dsql;
    $row = $dsql>GetOne("SELECT litpic FROM#@__archives WHERE id='$id'");
    if ($row['litpic']) {
        $imgurl = '/uploads/'.$row['litpic'];
    } else {
        $imgurl = '';
    }
    return $imgurl;
}

这个函数的作用是获取指定文章ID的缩略图地址,如果没有缩略图,返回空字符串。

在列表模板中调用自定义函数

我们需要在列表模板文件中调用刚刚编写的自定义函数,找到以下代码:

<a href="{$r[0]['typedir']}/{if $r[0]['filename']}$r[0]['filename']{else}article/default.html{/if}" target="_blank">

将其替换为:

<a href="{$r[0]['typedir']}/{if $r[0]['filename']}$r[0]['filename']{else}article/default.html{/if}" target="_blank">
    {if $r[0]['litpic'] != ''}<img src="{dede:field name='dede:GetThumbnail(@me)' function='htmlspecialchars(addslashes(@me))'/}" alt="" width="80" height="80" />{/if}
</a>

这样,当文章有缩略图时,会在链接前显示缩略图;如果没有缩略图,则不显示任何内容。

如何在DedeCMS列表页中实现有图则调用缩略图,无图则留空?

相关问答FAQs

h3 如何修改缩略图的尺寸?

在列表模板中调用自定义函数的代码中,我们设置了缩略图的宽度和高度分别为80像素,你可以通过修改这两个值来调整缩略图的尺寸,将宽度和高度都改为100像素:

<a href="{$r[0]['typedir']}/{if $r[0]['filename']}$r[0]['filename']{else}article/default.html{/if}" target="_blank">
    {if $r[0]['litpic'] != ''}<img src="{dede:field name='dede:GetThumbnail(@me)' function='htmlspecialchars(addslashes(@me))'/}" alt="" width="100" height="100" />{/if}
</a>

h3 如何为缩略图添加水印?

GetThumbnail()函数中,我们设置了一个名为$is_watermark的参数,默认值为false,你可以将其设置为true,然后根据需要添加水印功能,你可以在/include/helpers/image.helper.php文件中添加如下代码:

function thumb($src, $width, $height, $is_watermark = false) {
    // ...原有代码...
    if ($is_watermark) {
        // 添加水印的代码
    }
    // ...原有代码...
}

然后在GetThumbnail()函数中传递$is_watermark参数:

function GetThumbnail($id, $width = '', $height = '', $is_watermark = false) {
    // ...原有代码...
    return thumb($imgurl, $width, $height, $is_watermark);
}

在列表模板中调用自定义函数时,将$is_watermark参数设置为true

<a href="{$r[0]['typedir']}/{if $r[0]['filename']}$r[0]['filename']{else}article/default.html{/if}" target="_blank">
    {if $r[0]['litpic'] != ''}<img src="{dede:field name='dede:GetThumbnail(@me, 100, 100, true)' function='htmlspecialchars(addslashes(@me))'/}" alt="" width="100" height="100" />{/if}
</a>

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1212006.html

(0)
未希的头像未希新媒体运营
上一篇 2024-10-13 22:38
下一篇 2024-10-13 22:39

相关推荐

  • 如何在dedecms 5.7中实现织梦栏目获取无限子分类的修改方法?

    要在Dedecms 5.7中实现织梦栏目获取无限子分类,可以通过修改数据库结构和相关代码来实现。,,在数据库中为#@__arctype表添加一个名为pidpath的字段,用于存储每个分类的父级路径。在模板中使用递归函数来获取无限子分类。,,具体步骤如下:,,1. 修改数据库结构,为#@__arctype表添加pidpath字段。,2. 修改/include/channelunit.func.php文件,添加一个名为GetSonIdList()的函数,用于获取子分类ID列表。,3. 修改/templets/default/channel_list.htm文件,使用递归函数调用GetSonIdList()函数来获取无限子分类。,,以下是具体的代码示例:,,1. 修改数据库结构:,,“sql,ALTER TABLE #@__arctype ADD pidpath VARCHAR(255) NOT NULL;,`,,2. 修改/include/channelunit.func.php文件,添加GetSonIdList()函数:,,`php,function GetSonIdList($pid, $type = ‘both’, $recursion = false) {, global $dsql;, $result = array();, if ($recursion) {, $row = $dsql˃GetOne(“SELECT id, mid, pidpath FROM #@__arctype WHERE id=’$pid'”);, $result[] = $row[‘id’];, $result = array_merge($result, explode(‘,’, $row[‘mid’]));, } else {, $row = $dsql˃GetOne(“SELECT id, mid FROM #@__arctype WHERE pid=’$pid’ AND type=’$type'”);, $result[] = $row[‘id’];, $result = array_merge($result, explode(‘,’, $row[‘mid’]));, }, return $result;,},`,,3. 修改/templets/default/channel_list.htm文件,使用递归函数调用GetSonIdList()函数:,,`php,,`,,然后在模板中调用GetSubCategory()函数:,,`html,,,,“,,这样,你就可以在Dedecms 5.7中实现织梦栏目获取无限子分类了。

    2024-10-09
    06
  • 为什么在dedecms模板中,使用channel标签指定typeid时,currentstyle样式却无法生效?

    “`htmlChannel Tag CurrentStyle Invalid Solution /* CSS样式定义 */ .current { color: red; /* 高亮颜色 */ font-weight: bold; } // JavaScript动态样式应用 var typeid = ‘1……

    2024-10-05
    012
  • 如何调整DedeCMS列表页的缩略图尺寸以优化页面布局?

    在DedeCMS中,要控制列表页的缩略图大小,可以通过修改CSS样式表来调整。找到对应的CSS文件,一般为style.css或style/xxx.css,然后修改其中的图片尺寸属性,width和height`,设置成你需要的值即可。

    2024-08-05
    025
  • 如何高效管理DedeCMS中的广告内容?

    dedecms广告管理教程是一系列指导性的文章或视频,旨在帮助用户了解和使用dedecms内容管理系统中的广告管理功能。这些教程通常会介绍如何添加、编辑、删除和显示广告位,以及如何通过广告模块实现广告的投放和管理。

    2024-09-02
    022

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入