自定义Handsome主题默认头图(支持多站点)

自定义Handsome主题默认头图(支持多站点)

低调G
2020-05-27 / 0 评论 / 1,442 阅读 / 正在检测是否收录...

想法

因为handsome主题的默认头图有点单调,想加点图片,想了几个需求,总结了下来。

  1. 能添加多个站子的图片
  2. 不用自己的blog存储资源
  3. 尽量少更改主题代码,便于更新主题的时候恢复

用法

  1. 首先把文章最后的代码存到一个php文件里,位置任意,我这里的位置为/code/get_img.php
  2. 打开/usr/themes/handsome/libs/Content.php文件找到whenSwitchHeaderImgSrc函数附近
  3. 注释掉$randomNum = unserialize(INDEX_IMAGE_ARRAY);$random = THEME_URL . 'usr/img/sj/' . @$randomNum[$index] . '.jpg';
  4. 添加一行$random = '/code/get_img.php?_='.rand(999, 3000);

修改完的Content.php文件whenSwitchHeaderImgSrc函数附近应该是长这样的。

public static function whenSwitchHeaderImgSrc($index =0,$howToThumb,$attach,$content,$thumbField){
    $options = mget();
    //$randomNum = unserialize(INDEX_IMAGE_ARRAY);

    // 随机缩略图路径
    //$random = THEME_URL . 'usr/img/sj/' . @$randomNum[$index] . '.jpg';//如果有文章置顶,这里可能会导致index not undefined
    $random = '/code/get_img.php?_='.rand(999, 3000);
    $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i';

配置文件

根据我代码里的样式添加图片的配置就可以了,最好找用id区分图片的网站,配置项会短小很多。
list里面是图片id
fun里面是当前数组的url生成函数,想通过参数修改图片大小在这里面修改就搞定了。

代码

<?php
/*
直接请求将随机跳转到一个图片
*/
$imgArr = [];

//https://www.pexels.com/zh-cn/
$imgArr[0] = [
'list'=>[267371,230477,1115680,838413,235922,1560424,1056251,416160,96938,2194261,
666839,1133957,1269025,1089932,338711,573910,670061,3113124,247431,434090,
1209843,1684187,358312,1536619,96380,164821,373945,1547248,301920,256468,
1653823,59106,556665,461198,376464,321588,3193917,1040157,189349,396547,
3145552,220067,285173,409701,917076,255464,735911,2120016,1162540,],
'fun'=> function($id){return "https://images.pexels.com/photos/{$id}/pexels-photo-{$id}.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500";}
];

//https://i.keaitupian.net/
// $imgArr[1] = [
//     'list'=>[
//         'up/40/c0/7c/ec2caa4f7b67d2b44a95bece4e7cc040.jpg',
//         'up/38/05/17/57ae05cdfe607c1f877a7881ea170538.jpg'
//     ],
//     'fun'=> function($id){return "https://i.keaitupian.net/".$id;}
// ];
function oneImg($id=false){
global $imgArr;
//求图片总数

// echo $count;
//随机选择一个
if($id == false){
    $count = 0;
    foreach($imgArr as $item){
        $count += count($item['list']);
    }
    $id = rand(0, $count - 1);
}
//累积下标
$key = 0;
foreach($imgArr as $item){
    if(isset($item['list'][$id - $key])){
        return $item['fun']($item['list'][$id - $key]);
    }else{
        $key += count($item['list']);
        continue;
    }
}
}

header('Location: '.oneImg(isset($_GET['id'])?$_GET['id']:false));exit;

本文转自:拯救夜猫

0

评论 (0)

取消