typecho首页缩略图实现外链图片也能显示缩略图功能折腾过程



  Typecho博客系统轻便小巧让我入坑了,所以功能上有一些不足的地方,对于我这样的小白就有的搞啦,哈哈。下面记录我关于typecho首页缩略图实现外链图片也能显示缩略图功能改进过程。

  有个博客首页里需要显示图片,最开始模板的功能是只能显示随机缩略图图片,这样虽然看起来图片不会那么单调,但我自己文章经常会有图片,那么这些图片就不会在首页缩略图里显示了,这怎么可以,岂不浪费资源吗!

  于是网上找到了(代码一),终于可以实现首页缩略图显示先后顺序:文章自定义字段缩略图→第一张附件图片→随机图片显示。开始觉得可以了,满足我的需求了,就这样用了一段时间。可是随着图片的增多,我开始将图片往图床上放,于是问题来了,使用了外链图片的文章不显示文章里的缩略图,只显示随机缩略图。于是又到网上找,只找到了可以优先显示外链图片然后显示固定缩略图的(代码二)。
  为什么就没有大神把这三种功能结合一下呢,实现缩略图显示顺序:自定义缩略图字段→附件图片→外链图片→随机图片。于是乎,我就想能不能把以上两段代码撮巴撮巴,凑在一起呢?!

  先当上上面提到的两段代码。  

代码一

/** * 优先调用附件图片,再显示随机图片 * * */ 
function thumb($obj) { 
        $rand_num = 10; //随机图片数量,根据图片目录中图片实际数量设置 
  if ($rand_num == 0) { 
        $imgurl = "/images/random/0.jpg"; //如果$rand_num = 0,则显示默认图片,须命名为"0.jpg",注意是绝对地址 
      }
  else{ 
        $imgurl = "/images/random/".rand(1,$rand_num).".jpg"; //随机图片,须按"1.jpg","2.jpg","3.jpg"...的顺序命名,注意是绝对地址 
      } 
  $attach = $obj->attachments(1)->attachment; 
  if(isset($attach->isImage) && $attach->isImage == 1){ 
       $thumb = $attach->url; 
      }
  else{ 
       $thumb = $imgurl; 
      } 
  return $thumb; 
}

  前端模板缩略图地址调用代码: <?php echo thumb($this->cid); ?>

代码二

function showThumbnail($widget) { 
    $mr = '默认图片地址'; 
    $attach = $widget->attachments(1)->attachment; 
    $pattern = '/\]*>/i'; 
  if (preg_match_all($pattern, $widget->content, $thumbUrl)) { 
    echo $thumbUrl[1][0]; 
  } 
  elseif ($attach->isImage) { 
    echo $attach->url; 
  } 
  else { 
    echo $mr; 
  } 
}

  前端模板缩略图地址调用代码: <?php showThumbnail($this); ?> 

撮合代码一 and 代码二

// 首页缩略图
function thumb($obj) { 
  $rand_num = 20; //随机图片数量,根据图片目录中图片实际数量设置 
  if ($rand_num == 0) { 
     $imgurl = "../images/random/0.jpg"; //如果$rand_num = 0,则显示默认图片,须命名为"0.jpg",注意是绝对地址,及无图时显示固定缩略图0.jpg<将上面数字41改为0即可>
      }
  else{ 
     $imgurl = "../images/random/".rand(1,$rand_num).".jpg"; //随机图片,须按"1.jpg","2.jpg","3.jpg"...的顺序命名,注意是绝对地址 
      } 
     $attach = $obj->attachments(1)->attachment; $pattern = '/\]*>/i'; if (preg_match_all($pattern, $obj->content, $thumbUrl)) { $thumb = $thumbUrl[1][0]; 
      } 
  elseif ($attach->isImage) { 
     $thumb = $attach->url;
      } 
  else { 
     $thumb = $imgurl; 
      } 
  return $thumb; 
}

添加自定义缩略图字段

在主题文件 functions.php 的函数 function themeFields($layout) {} 中添加一下代码:

    $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('自定义缩略图'), _t('在这里填入一个图片 URL 地址, 以添加本文的缩略图!));
    $thumb->input->setAttribute('class', 'w-100');
    $layout->addItem($thumb);

  前端模板缩略图地址调用代码: <?php echo thumb($this->cid); ?>

  好了,到这里首页缩略图代码就搞定了,祝君成功。

拓展:拓展功能还可以结合 图片API ,达到随机缩略图的效果。博友们有空可以自己折腾!!!


 赏 
感谢您的支持,我会继续努力哒!
支付宝收款码
tips
(*) 4 + 3 =
共 3 条评论, 0 次评论点赞。快来参与吧!
    2023年11月08日 广东省湛江市 发自Android 回复 0

    太棒了

    2023年08月26日 河北省 发自Android 回复 0

    不错,收藏网站了

    2022年10月20日 贵州省贵阳市小河区 发自Windows 10 回复 0

    ヾ(≧∇≦*)ゝ优秀