typecho调用多张缩略图,非插件实现

本文阅读 2 分钟
广告

这就是博客文章列表页显示三张缩略图的实现方式,本博客的模板也是将大多数功能都通过function.php中定义来实现,没有去借助插件之类的,那样确实搞起来很麻烦。比如目前这个功能,大概的参考了youdu模板的写法,问题还是有的,因为需要确保发布的文章必须有三张以上的图片附件,否则就会直接报错,更多的控制我也没有继续写下去,但是进一步的扩展肯定是可以的。
timg (1).jpg
代码如下:

/** 输出文章缩略图 */
function showThumbnail($widget,$imgnum){ //获取两个参数,文章的ID和需要显示的图片数量
    // 当文章无图片时的默认缩略图
    $rand = rand(1,20); 
    $random = $widget->widget('Widget_Options')->themeUrl . '/img/rand/' . $rand . '.jpg'; // 随机缩略图路径
    $attach = $widget->attachments(1)->attachment;
    $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i'; 
    $patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i';
    $patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i';
    //如果文章内有插图,则调用插图
    if (preg_match_all($pattern, $widget->content, $thumbUrl)) { 
        echo $thumbUrl[1][$imgnum];
    }
    //没有就调用第一个图片附件
    else if ($attach && $attach->isImage) {
        echo $attach->url; 
    } 
    //如果是内联式markdown格式的图片
    else if (preg_match_all($patternMD, $widget->content, $thumbUrl)) {
        echo $thumbUrl[1][$imgnum];
    }
    //如果是脚注式markdown格式的图片
    else if (preg_match_all($patternMDfoot, $widget->content, $thumbUrl)) {
        echo $thumbUrl[1][$imgnum];
    }
    //如果真的没有图片,就调用一张随机图片
    else{
        echo $random;
    }
}

调用的代码就是以下这样,从0开始算,数字0则调用第一张

<?php showThumbnail($this,0); ?>

我博客里实现的效果如下:
1.png

规则之树版权所有,亲自整理,转载注明来源,最好留个外链

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/877/
2019开始了,内心毫无波动
« 上一篇 01-05
BrnShop首页数据调用方式,简单记录
下一篇 » 01-08
广告

发表评论

V注册会员 L评论等级
R7 条回复
  1. ooogoLv.1 说道:
    2021-08-25     Win 10 /    Chrome

    https://imgtu.com/i/hE61r8
    看最后一张,我不懂你能理解不

  2. ooogoLv.1 说道:
    2021-08-25     Win 10 /    Chrome

    因为代码不让贴,我用图床看下
    https://imgtu.com/i/hEaZUP

  3. ooogoLv.1 说道:
    2021-08-25     Win 10 /    Chrome

    大佬,求教下,我用了你这个函数,测试了多种效果,发现了1个问题,不知道要怎么解决困惑了3天,终于找到你了。
    第一种方式:文章有外链图的时候,缩略图显示,正常
    第二种方式:自定义字段填写缩略图的路径,缩略图显示,正常
    第三种方式(有bug的方式):文章有附件,但是附件没有用图片显示在文章内容里,这里没有用循环,直接用可以显示附件的第一张图片。但是如果用






    这样就不会显示附件里的图片,因为我没有插入内容里。我如果删掉pageSize=10和to($post)后,就能正常显示未插入内容的附件缩略图。问题是删掉了以后,我不能指定读取数量了。

  4. 锅大侠Lv.1 说道:
    2019-03-16     Win 10 /    QQ浏览器

    怎么输出三张 icon_question.gif

    1. 不暇VLv.6 说道:
      2019-03-17     Android /    Chrome

      @锅大侠

      最后的 数字啊,0是第一张,1是第二张,2是第三张

      1. 锅大侠Lv.1 说道:
        2019-03-17     Win 10 /    QQ浏览器

        @不暇

        给个循环更好,

        1. 不暇VLv.6 说道:
          2019-03-18     Win 7 /    Chrome

          @锅大侠

          那没必要了,我的目的是可以自己指定要显示的图片,不是全部输出,循环只会导致简单的事情变麻烦。

没有更多评论了

作者信息

热门文章

标签TAG

热评文章