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

洒家是环境人 2019-09-19 AM 153℃ 0条
         typecho博客系统轻便小巧让我入坑了,所以功能上有一些不足的地方,对于我这样的小白就有的搞啦,哈哈。下面记录我关于typecho首页缩略图实现外链图片也能显示缩略图功能改进过程。

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

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

        先当上上面提到的两段代码。
        代码一:
 /**
 * 优先调用附件图片,在显示随机图片
 * 
 * 
 */
function thumb($obj) {
	$rand_num = 41; //随机图片数量,根据图片目录中图片实际数量设置
	if ($rand_num == 0) {
		$imgurl = "https://wiki.huanjingren.cn/usr/themes/Akina/images/random/0.jpg";
		//如果$rand_num = 0,则显示默认图片,须命名为"0.jpg",注意是绝对地址
	}else{
		$imgurl = "https://wiki.huanjingren.cn/usr/themes/Akina/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); ?>


      代码一代码二撮合后:
 function thumb($obj) {
	$rand_num = 41; //随机图片数量,根据图片目录中图片实际数量设置
	if ($rand_num == 0) {
		$imgurl = "https://wiki.huanjingren.cn/usr/themes/Akina/images/random/0.jpg";
		//如果$rand_num = 0,则显示默认图片,须命名为"0.jpg",注意是绝对地址,及无图时显示固定缩略图0.jpg<将上面数字41改为0即可>
	}else{
		$imgurl = "https://wiki.huanjingren.cn/usr/themes/Akina/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;
	}

         前端模板缩略图地址调用代码:<?php echo thumb($this->cid); ?>
         
         好了,到这里首页缩略图代码就搞定了,祝君成功。注意修改代码中文字注释的地方为你自己的具体情况。


标签: typecho首页缩略图 分享:

声明:非特殊说明,本博所有文章均为博主原创。

收录:百度已收录

您有什么独到的见解或问题?