本篇文章虽说是教大家如何调用上下篇文章缩略图的,但是实则是探讨一种船新的函数写法。在正式教程开始之前,首先我们需要先写个缩列图函数,如下:
function showThumbnail($widget)
{
$mr = '默认图片地址';
$attach = $widget->attachments(1)->attachment;
$pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/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); ?>
,参数是$this
,问题的关键点就是如何找到上下篇文章的$this
,几年前的给别人弄的时候选择了一种比较繁琐的方式,就是先查到上下篇文章的cid,然后根据《Typecho根据文章cid获取文章信息》提到的方式,调用出对应的$this
,这种方式缺点就是代码多了一些数据查询也多了两次。
2021年开年之际,我又投入时间研究了这个问题,经过大量失败后所幸还是研究出成果了。原理就是自己写两个函数用来输出上下篇文章,关键点也是在$this
参数上,折腾了好久,具体代码如下。
首先是函数部分
//下一篇
function theNext($widget)
{
$t = Typecho_Widget::widget('Widget_Archive@1');//@的作用我之前也有讲过,就是用来区分的,这里的$t就是定义的$this
$db = Typecho_Db::get();
$sql = $db->select()->from('table.contents')
->where('table.contents.created > ?', $widget->created)
->where('table.contents.status = ?', 'publish')
->where('table.contents.created <= ?', time())
->where('table.contents.type = ?', $widget->type)
->where('table.contents.password IS NULL')
->order('table.contents.created', Typecho_Db::SORT_ASC)
->limit(1);//sql查询下一篇文章
$db->fetchAll($sql, array($t, 'push'));//这个代码就是如何将查询结果封到$this里的
return $t;//返回变量
}
//上一篇
function thePrev($widget)
{
$t = Typecho_Widget::widget('Widget_Archive@2');//@的作用我之前也有讲过,就是用来区分的,@后面参数随便只要和上边的不一样就行
$db = Typecho_Db::get();
$sql = $db->select()->from('table.contents')
->where('table.contents.created < ?', $widget->created)
->where('table.contents.status = ?', 'publish')
->where('table.contents.created <= ?', time())
->where('table.contents.type = ?', $widget->type)
->where('table.contents.password IS NULL')
->order('table.contents.created', Typecho_Db::SORT_DESC)
->limit(1);//sql查询上一篇文章
$db->fetchAll($sql, array($t, 'push'));
return $t;//返回变量
}
调用部分
一般在post.php或者page.php中使用
风祥雨顺 谷果丰登 万姓四民 永安富乐
墓碑上的“故、显、先、考、妣”是什么意思?
感谢,回复看看方法
感谢
你这个joe主题没少加功能,不错啊
感谢博主
对小白真的很友好,写的很全面学习到了,感谢博主。
学习到了,感谢博主
学习到了,感谢博主
这篇文章写的真不错,真详细,点个赞。
学习到了,感谢博主
typecho的好教程。
谢谢,求文章缩略图
表情学习一下!
代码写的很6
代码写的很6
代码写的很6
谢谢, 学习一下
学习一下!
学习一下!
学习一下!
谢谢, 学习一下
咔咔咔咔咔咔看一下
看看看看看看看
看看^_^
大佬有没有文章目录
插件应该有,不过一般都是集成在主题里,稍微修改一下应该可以用
看看
看看