幻蓝小站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 19|回复: 0

typecho缩略图加入根据标签缩略名输出缩略图

[复制链接]

7109

主题

7112

帖子

2万

积分

管理员

积分
21410
幻蓝 发表于 2022-11-21 13:44:57
做出来的效果就是:
缩略图显示,依次是附件中的图片,若不存在,输出文章的第一张图片,若不存在,输出对应的tag缩略名图片,若是未配置的tag,则输出随机图片,若文章不存在tag,则输出随机图片。

首先在functions.php添加
  1. /** 输出文章缩略图 */
  2. function showThumbnail($widget)
  3. {
  4.     // 当文章无图片时的默认缩略图
  5.     $rand = rand(1,99); // 随机 1-99 张缩略图
  6.     $random = $widget->widget('Widget_Options')->themeUrl . '/img/sj/' . $rand . '.jpg'; // 随机缩略图路径
  7.    // $random = $widget->widget('Widget_Options')->themeUrl . '/img/mr.jpg'; // 若只想要一张默认缩略图请删除本行开头的"//",需要在img文件夹下放个mr.jpg图片

  8.     $attach = $widget->attachments(1)->attachment;
  9.     $pattern = '/\<img.*?src\="(.*?)"[^>]*>/i';



  10. if (preg_match_all($pattern, $widget->content, $thumbUrl)) {
  11.          echo $thumbUrl[1][0];
  12.     } else     if ($attach->isImage) {
  13.       echo $attach->url;
  14.     }
  15. else
  16. if ($widget->tags) {
  17. foreach ($widget->tags as $tag) {
  18. if($tag['slug']==daima||$tag['slug']==anzhuo){//if语句判断标签缩略名,如果是则输出下面文件夹内的图片
  19. $a= $widget->widget('Widget_Options')->themeUrl . '/img/tag/' . $tag['slug'] . '.jpg';
  20. echo $a;
  21. }else {
  22. echo $random;//没有匹配的标签图片,则随机输出图片
  23. }
  24. break;
  25. }
  26. } else {
  27. echo $random;
  28. }      
  29. }
复制代码
模板中需要添加缩略图地址的地方添加
  1. <?php showThumbnail($this); ?>
复制代码
图片放置位置,在对应模板根目录里,添加img文件夹,然后新建文件夹sj,里面放图片,格式要求1.jpg...99.jpg,然后再在img文件夹下新建文件夹tag里面放置tag缩略名对应的图片,按照上述代码的话需要放置两站图片,命名分别为daima.jpg和anbzhuo.jpg。

最后提示
typecho的标签缩略名后台是可以设置的,不设置的话默认是和标签名字一样。比如该篇文章标签名字是typecho,默认他的缩略名也是typecho,但我把它的缩略名改成了te,也就是说这篇文章的缩略图是te.jpg。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|幻蓝小站 ( 黔ICP备18008076号-1 )

GMT+8, 2022-12-7 22:06

Powered by Discuz! X3.5

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表