首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Typecho最新热门热评文章调用api

Typecho最新热门热评文章调用api

作者头像
泽泽社长
发布2023-04-17 14:52:59
发布2023-04-17 14:52:59
6750
举报
文章被收录于专栏:泽泽社泽泽社

因为群友花花弄了个高仿掘金主题,没有实现热门与热评文章加载功能,特此为其分享点代码,先是简单弄了个json版本,后来根据需求又弄了个html的版本

使用

用法就是将下面的函数放到模板函数文件里,如果存在同名函数请自行合并。

JSON版

代码语言:javascript
复制
function themeInit($archive)
{
$db = Typecho_Db::get();//数据库操作调用
if($archive->request->api){
$pagesize=8;//每页文章数量
$p=1;if($archive->request->page){$p=$archive->request->page;}
$select=$db->select('cid')->from('table.contents')
            ->where('table.contents.status = ?','publish')
            ->where('table.contents.password IS NULL')
            ->where('table.contents.type = ?', 'post');
if($archive->request->api=='new'){           
$select=$select->order('table.contents.created', Typecho_Db::SORT_DESC);
}elseif($archive->request->api=='hot'){
$select=$select->order('table.contents.commentsNum', Typecho_Db::SORT_DESC);
}elseif($archive->request->api=='views'){
$select=$select->order('table.contents.views', Typecho_Db::SORT_DESC);
}  
$select=$db->fetchAll($select->page($p,$pagesize));//分页
$lon=count($select);
for($ii=0;$ii<$lon;$ii++){
$archive->widget('Widget_Archive@indexxiu', 'pageSize=1&type=post', 'cid='.$select[$ii]['cid'])->to($ji);
 $b[] = array( 
                "cid" => $ji->title,
                "title" => $ji->permalink,
                "description" => $ji->description,
            );   
}  
$archive->response->throwJson(array(
            'status' => '200',
            'data' => $b
        ));
}
}

html版本

代码语言:javascript
复制
function themeInit($archive)
{
$db = Typecho_Db::get();
if($archive->request->api){
$pagesize=8;//每页文章数量
$p=1;if($archive->request->page){$p=$archive->request->page;}
$nextpage=$p+1;
$select=$db->select('cid')->from('table.contents')
            ->where('table.contents.status = ?','publish')
            ->where('table.contents.password IS NULL')
            ->where('table.contents.type = ?', 'post');
if($archive->request->api=='new'){           
$select=$select->order('table.contents.created', Typecho_Db::SORT_DESC);
}elseif($archive->request->api=='hot'){
$select=$select->order('table.contents.commentsNum', Typecho_Db::SORT_DESC);
}elseif($archive->request->api=='views'){
$select=$select->order('table.contents.views', Typecho_Db::SORT_DESC);
}  
$select=$db->fetchAll($select->page($p,$pagesize));//分页

$lon=count($select);
for($i=0;$i<$lon;$i++){
$archive->widget('Widget_Archive@indexxiu'.$i, 'pageSize=1&type=post', 'cid='.$select[$i]['cid'])->to($ji);
?>

          title() ?>
        
siteUrl.'?api='.$archive->request->api.'&page='.$nextpage.'">下页';    
}
}  
exit;
}
}

调用方法

最新文章:https://你的域名/?api=new&page=1

热评文章:https://你的域名/?api=hot&page=1

热门文章:https://你的域名/?api=views&page=1

其中page为当前页码

PS

其实也可以利用我之前的https://cloud.tencent.com/developer/article/2266992 这个教程来写,应该能减少一些sql查询,不过我比较喜欢当前这个,主要是写起来比较方便!

linkCard('.post-content','0');

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JSON版
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档