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

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

首先是丢进主题里面的function里面

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;
    }
}
//下一篇
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中使用

<?php
$prev=thePrev($this);//调用函数并将函数值给变量
$next=theNext($this);//调用函数并将函数值给变量
 ?>
<?php if($prev->created<$this->created): ?><!--判断上一篇文章是否存在-->
<div class="col-12<?php if($next->created>$this->created){echo ' col-md-6 pr-1';} ?>">
<div class="mb-3"> <a href="<?php $prev->permalink(); ?>" title="<?php $prev->title(); ?>"><div class="overlay"></div> <img src="<?php showThumbnail($prev); ?>" alt="<?php $prev->title(); ?>" class="slimg"><div class="title"><div class="entry-meta"><span><?php $prev->date(); ?></span><span></span></div><h4><?php $prev->title(); ?></h4></div> </a></div>
</div><?php endif; ?>
<!--
讲解一下,$prev=thePrev($this);调用后,$prev->permalink就是上一篇文章的链接,$prev->title就是标题,showThumbnail($prev)就是缩略图,就跟正常调用文章的语法一致,只是$this换成了$prev。
-->
<?php if($next->created>$this->created): ?><!--判断下一篇文章是否存在-->
<div class="col-12<?php if($prev->created<$this->created){echo ' col-md-6 pl-1';} ?>">
<div class="mb-3"> <a href="<?php $next->permalink() ?>" title="<?php $next->title(); ?>"><div class="overlay"></div> <img src="<?php showThumbnail($next); ?>" alt="<?php $next->title(); ?>" class="slimg"><div class="title"><div class="entry-meta"><span><?php $next->date(); ?></span><span></span></div><h4><?php $next->title(); ?></h4></div> </a></div>
</div><?php endif; ?>

作者:Chen'mo
注意,需要自己调整css布局,,貌似会奇奇怪怪,输出是输出了

免责说明

本站资源部分来自网友投稿,如有侵犯你的权益请联系管理员或给邮箱发送邮件PubwinSoft@foxmail.com 我们会第一时间进行审核删除。
站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果遇到评论下载的文章,评论后刷新页面点击对应的蓝字按钮即可跳转到下载页面
本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR

给TA打赏
共{{data.count}}人
人已打赏
Typecho教程

Typecho 官方文档开发接口介绍

2023-3-28 9:35:36

Typecho教程

Typecho纯代码实现评论数学验证功能并且隐入评论框美化

2023-3-28 9:41:07

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索