QQ爹の博客 QQ爹の博客

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

in Typecho read (1285) 361汉字 文章转载请注明来源!

做出来的效果就是:
缩略图显示,依次是附件中的图片,若不存在,输出文章的第一张图片,若不存在,输出对应的tag缩略名图片,若是未配置的tag,则输出随机图片,若文章不存在tag,则输出随机图片。

首先在functions.php添加

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

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



if (preg_match_all($pattern, $widget->content, $thumbUrl)) {
         echo $thumbUrl[1][0];
    } else     if ($attach->isImage) {
      echo $attach->url; 
    } 
else
if ($widget->tags) {
foreach ($widget->tags as $tag) {
if($tag['slug']==daima||$tag['slug']==anzhuo){//if语句判断标签缩略名,如果是则输出下面文件夹内的图片
$a= $widget->widget('Widget_Options')->themeUrl . '/img/tag/' . $tag['slug'] . '.jpg';
echo $a;
}else {
echo $random;//没有匹配的标签图片,则随机输出图片
}
break;
}
} else {
echo $random;
}      
}

模板中需要添加缩略图地址的地方添加

<?php showThumbnail($this); ?>

图片放置位置,在对应模板根目录里,添加img文件夹,然后新建文件夹sj,里面放图片,格式要求1.jpg...99.jpg,然后再在img文件夹下新建文件夹tag里面放置tag缩略名对应的图片,按照上述代码的话需要放置两站图片,命名分别为daima.jpg和anbzhuo.jpg。

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

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

typecho
最后由Jrotty编辑于2016-03-27 11:55
发表新评论
已有 16 条评论
  1. 浅斟低唱

    你好,我按照博主的弄了,显示的是图片链接,这是怎么回事呢?

  2. 一日
    一日
    回复

    当我启用了缓存之后,点击首页标题,缩略图都不变,只有按F5刷新才会变,是图片被缓存了吗?
    求解是什么问题呢,你的博客没有这个问题呀。
    我截图了:https://i4.piimg.com/567571/d7559f379625582d.gif
    前面两次是直接点的标题,缩略图没有变,后面两次是按F5刷新的,缩略图变了。缓存是在.htaccess 加了这些语句
    <IfModule mod_expires.c>开启ExpiresActive On设置默认的缓存时间ExpiresDefault A2592000以下是针对不同的文件类型设置不同的缓存时间ExpiresByType image/x-icon A2592000
    ExpiresByType application/x-javascript A2592000
    ExpiresByType text/css A2592000
    ExpiresByType image/gif A604800
    ExpiresByType image/png A604800
    ExpiresByType image/jpeg A604800
    ExpiresByType text/plain A604800
    ExpiresByType application/x-shockwave-flash A604800
    ExpiresByType video/x-flv A604800
    ExpiresByType application/pdf A604800
    ExpiresByType text/html A900
    ExpiresByType application/javascript "access plus 1 year"
    ExpiresByType image/svg A604800</IfModule>

    1. 一日
      一日
      回复

      @一日 发现了问题原因了,我把html都给缓存了,,#[笑尿]

    2. Jrotty
      Jrotty
      回复

      @一日 我没开缓存所以才没问题的#[狗]

  3. 一日
    一日
    回复

    抱走了随机输出图片的代码了┗|`O′|┛ 嗷~~#[大笑]

    1. Jrotty
      Jrotty
      回复

      @一日 我找这些图用了超长的时间,最初只是找些简单的表情包

    2. 一日
      一日
      回复

      @一日 [狂汗]好厉害!我找不到好看的图#[哭]

    3. Jrotty
      Jrotty
      回复

      @一日 目前我已经增加到了120多张,都裁剪到140x140了

    4. 一日
      一日
      回复

      @一日 那只有增加图片个数来减小多张相同的概率了#[吃瓜]

    5. 一日
      一日
      回复

      @一日 我的也是没图的时候才会随机输出哈!#[大笑]

    6. Jrotty
      Jrotty
      回复

      @一日 我的只是文章没图时才随机的,有图还是用文章的相关图片比较好( ̄▽ ̄)

    7. 一日
      一日
      回复

      @一日 对呀,随机避免了视觉疲劳#[滑之稽]

    8. Jrotty
      Jrotty
      回复

      @一日 随机很吊的,就是偶尔会同一页不同的文章显示相同的图片

  4. mluke
    mluke
    回复

    我也是搞了好久才把多说搞定

  5. 南街
    南街
    回复

    沙发,还是没学会怎么整多说插件

    1. 近泽
      近泽
      回复

      @南街 额,那你换个带自带评论的模板吧

前篇 后篇
雷姆
拉姆
音乐加载中...
0:00