Typecho上下篇文章代码输出文章缩略图

chen'mo
2021-02-27 / 33 评论 / 7,498 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年02月27日,已超过1359天没有更新,若内容或图片失效,请留言反馈。

本篇文章虽说是教大家如何调用上下篇文章缩略图的,但是实则是探讨一种船新的函数写法。在正式教程开始之前,首先我们需要先写个缩列图函数,如下:

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中使用

Typecho头图美化插件 ThumbOptimizer
« 上一篇 02-25
Byethost免费提供5G虚拟空间支持FTP、MySQL、CP面板
下一篇 » 02-28

评论 (33)

插入图片
  1. 头像
    amiisk Lv.2   河北省沧州市
    Windows 10 · QQ Browser
    沙发

    表情

    回复
  2. 头像
    l Lv.1   河北省沧州市
    Windows 10 · Google Chrome
    板凳

    表情表情

    回复
  3. 头像
    阿打算 Lv.1   广西南宁市
    Windows 11 · Google Chrome
    地毯

    墓碑上的“故、显、先、考、妣”是什么意思?

    回复
  4. 头像
    看看 Lv.1   山东省烟台市
    Windows 10 · Google Chrome
    第4楼

    感谢,回复看看方法

    回复
  5. 头像
    迷失 Lv.1   江西省赣州市
    Windows 10 · Google Chrome
    第5楼

    感谢

    回复
  6. 头像
    评论员 Lv.1   辽宁省大连市
    Windows 10 · Google Chrome
    第6楼

    你这个joe主题没少加功能,不错啊

    回复
  7. 头像
    李夏怡 Lv.1   广东省深圳市
    MacOS · Google Chrome
    第7楼

    感谢博主

    回复
  8. 头像
    1 Lv.1   贵州省贵阳市
    Windows 10 · Google Chrome
    第8楼

    对小白真的很友好,写的很全面学习到了,感谢博主。

    回复
  9. 头像
    mgg Lv.1   广西南宁市
    Windows 10 · Google Chrome
    第9楼

    学习到了,感谢博主

    回复
  10. 头像
    mge Lv.1   河北省邯郸市
    Windows 10 · Google Chrome
    第10楼

    学习到了,感谢博主

    回复
  11. 头像
    好哥哥 Lv.1   新疆阿勒泰地区
    Linux · Google Chrome
    第11楼

    这篇文章写的真不错,真详细,点个赞。

    回复
  12. 头像
    hail Lv.1   湖北省武汉市
    Windows 10 · Google Chrome
    第12楼

    学习到了,感谢博主

    回复
  13. 头像
    空空裤兜 Lv.1   甘肃省庆阳市
    Windows 10 · Google Chrome
    第13楼

    typecho的好教程。

    回复
  14. 头像
    66 Lv.1   广东省
    Windows 10 · QQ Browser
    第14楼

    谢谢,求文章缩略图

    回复
  15. 头像
    丝行 Lv.1   广东省
    Windows 10 · QQ Browser
    第15楼

    表情学习一下!表情

    回复
  16. 头像
    QQQ Lv.1   山东省青岛市
    Android · Google Chrome
    第16楼

    代码写的很6

    回复
  17. 头像
    QQ Lv.1   山东省青岛市
    Android · Google Chrome
    第17楼

    代码写的很6

    回复
  18. 头像
    QQ Lv.1   山东省青岛市
    Android · Google Chrome
    第18楼

    代码写的很6

    回复
  19. 头像
    amiisk Lv.2   江苏省盐城市
    Windows 10 · QQ Browser
    第19楼

    表情

    回复
  20. 头像
    loopu Lv.1   广东省广州市
    Windows 10 · Google Chrome
    第20楼

    谢谢, 学习一下

    回复
  21. 头像
    ffcctt Lv.1   广东省广州市
    Windows 10 · Google Chrome
    第21楼

    学习一下!

    回复
  22. 头像
    试试 Lv.1   安徽省合肥市
    MacOS · Google Chrome
    第22楼

    表情学习一下!

    回复
  23. 头像
    看下 Lv.1   安徽省合肥市
    MacOS · Google Chrome
    第23楼

    学习一下!

    回复
  24. 头像
    看下 Lv.1   安徽省合肥市
    MacOS · Google Chrome
    第24楼

    谢谢, 学习一下

    回复
  25. 头像
    非凡 Lv.1   吉林省长春市
    Windows 10 · Google Chrome
    第25楼

    表情表情

    回复
  26. 头像
    诶诶苏 Lv.1   山东省泰安市
    Windows 7 · Google Chrome
    第26楼

    咔咔咔咔咔咔看一下

    回复
  27. 头像
    芜湖 Lv.1   山东省泰安市
    iPhone · Safari
    第27楼

    看看看看看看看

    回复
  28. 头像
    gadahasdhf Lv.1   广东省广州市
    Windows 10 · Google Chrome
    第28楼

    表情

    回复
  29. 头像
    看看 Lv.1   湖南省长沙市
    Windows 10 · Google Chrome
    第29楼

    看看^_^

    回复
  30. 头像
    白嫖 Lv.1   北京市北京市
    Windows 10 · Google Chrome
    第30楼

    大佬有没有文章目录

    回复
    1. 头像
      chen'mo 作者 Lv.5   湖南省娄底市
      Windows 7 · Google Chrome
      @ 白嫖

      插件应该有,不过一般都是集成在主题里,稍微修改一下应该可以用

      回复
  31. 头像
    枯木逢春 Lv.1   福建省莆田市
    Windows 10 · QQ Browser
    第31楼

    看看

    回复
  32. 头像
    羡鱼 Lv.1   广东省东莞市
    Android · Google Chrome
    第32楼

    看看

    回复