typecho首页缩略图实现外链图片也能显示缩略图功能折腾过程
Typecho博客系统首页缩略图实现外链图片显示缩略图功能,通过整合现有代码,实现自定义缩略图、附件图片、外链图片和随机图片的显示顺序。
本文最后由 荒野孤灯 更新于 2023 年 3 月 12 日 18 时 27 分,已有 619 天未更新。今日被查阅 2 次,若内容或图片资源失效,请留言反馈,谢谢!
摘要由 AI 智能生成
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 ,达到随机缩略图的效果。博友们有空可以自己折腾!!!
分类标签:折腾,typecho,主题模板,工具代码,缩略图
文章链接:https://80srz.com/posts/837.html
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
太棒了
不错,收藏网站了
ヾ(≧∇≦*)ゝ优秀