当前位置:首页 > 行业动态 > 正文

如何在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>

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

相关问答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>
0