Web

怎么将Z-Blog的缩略图改为远程地址

Lan
Lan
2020-05-13 / 0 评论 / 1,403 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2020年05月13日,已超过1437天没有更新,若内容或图片失效,请留言反馈。

这两天发现博客首页的缩略图居然一直用的是本地的图片,这就太浪费服务器的空间了,因为本站的图片都是上传到U-file的。

image.png

然后我就开始翻模板文件。最后在include.php文件里面看到了。

image.png

那么问题又来了。我虽然学过C#,看过python,但是对PHP可是一脸懵逼呀。

一开始我想偷懒,就去这个模板的交流群问,去Z-Blog的社区问。额,似乎然并卵。

还是得自己动手,丰衣足食呀。

自己用现有的只是分析了一下这些代码

function Blogs_thumbnail($id, $sltww, $slthh, $link)
{
    global $zbp, $article;
    $article = GetPost((int)$id);
    $random = mt_rand(1, 10);
    preg_match_all('/<img.*?(?: |\t|\r|\n)?src=['"]?(.+?)['"]?(?:(?: |\t|\r|\n)+.*?)?/>/sim', $article->Content, $strResult, PREG_PATTERN_ORDER);
    $n = count($strResult[1]);  //文章中图片数量
    $zdsuoluetu = $article->Metas->Blogs_suoluetu; //是否手动设置缩略图?
    if (empty($zdsuoluetu)) { // 如果不是吧
        if ($n > 0) {  //再判断图片数量是否大于0.
            $sltu =  $strResult[1][0]; //如果是则取第一张图片为缩略图
        } else {
            $sltu = "{$zbp->host}zb_users/theme/{$zbp->theme}/image/random/{$random}.jpg";  //否则就在本地目录10张图片内随机选一张作为缩略图
        }
    } else {
        $sltu = $zdsuoluetu; //缩略图为手动设置的缩略图
    }
    $sltu = "<img src="{$zbp->host}zb_users/theme/{$zbp->theme}/template/timthumb.php?src={$sltu}&w={$sltww}&h={$slthh}&zc=1" alt="{$article->Title}" />"; //这里就是图片地址
    if ($link == 1) {
        $sltu = "<a href="{$article->Url}"  title="{$article->Title}">{$sltu}</a>";
    }
    return $sltu;
}

然后回到首页。检查了一下这些缩略图

image.png

把链接弄出来

image.png

大概就是将这张图片经过timthumb.php处理后展现出来。我的远程加速地址是pan.lanol.cn,所以我只要想办法将www换成pan就行了

然后我就百度搜索php,菜鸟教程走一波,应该是字符串处理一下就行了,所以这里选择php string

image.png

有两个替换,区分大小写和不区分大小写。选择不区分吧。

image.png

image.png

然后我就傻乎乎的把这句话复制到代码里面去了。echo str_ireplace("www","pan",$strResult[1][0]);

然后刷新。。

image.png

好吧,我去看下echo的意思才知道这玩意就是输出。。

嗯,这是个意外。

最终将代码改成了这样子

function Blogs_thumbnail($id, $sltww, $slthh, $link)
{
    global $zbp, $article;
    $article = GetPost((int)$id);
    $random = mt_rand(1, 10);
    preg_match_all('/<img.*?(?: |\t|\r|\n)?src=['"]?(.+?)['"]?(?:(?: |\t|\r|\n)+.*?)?/>/sim', $article->Content, $strResult, PREG_PATTERN_ORDER);
    $n = count($strResult[1]);
    $zdsuoluetu = $article->Metas->Blogs_suoluetu;
    if (empty($zdsuoluetu)) {
        if ($n > 0) {
            $sltu =  str_ireplace("www","pan",$strResult[1][0]);
        } else {
            $sltu = "{$zbp->host}zb_users/theme/{$zbp->theme}/image/random/{$random}.jpg";
        }
    } else {
        $sltu = $zdsuoluetu;
    }
    $sltu = "<img src="{$zbp->host}zb_users/theme/{$zbp->theme}/template/timthumb.php?src={$sltu}&w={$sltww}&h={$slthh}&zc=1" alt="{$article->Title}" />";
    if ($link == 1) {
        $sltu = "<a href="{$article->Url}"  title="{$article->Title}">{$sltu}</a>";
    }
    return $sltu;
}

完美解决

0

评论 (0)

取消