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

前言

支持将typecho系统下的文章通过JSON/HTML输出,方便二次开发。

安装

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

输出JSON版本

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版本

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);
			?>
			<a class="title" href="<?php $ji->permalink() ?>" title="<?php $ji->title() ?>">
			          <h2><?php $ji->title() ?></h2>
			        </a>
			<?php
			if($i==$lon-1) {
				echo '<a class="next" href="'.Helper::options()->siteUrl.'?api='.$archive->request->api.'&page='.$nextpage.'">下页</a>';
			}
		}
		exit;
	}
}

调用方法

最新文章:https://你的域名/?api=new&page=1
热评文章:https://你的域名/?api=hot&page=1
热门文章:https://你的域名/?api=views&page=1
其中page为当前页码

给TA打赏
共{{data.count}}人
人已打赏
技术笔记

学习网页实现评论弹幕气泡(附7b2优化成果)

2022-1-1 15:42:52

Typecho模板插件

开源免授权影视2号模板Typecho影视类主题

2022-2-28 15:58:31

声明 本站文章上的代码及教程皆来源于NOW世界(favnow.com),仅供学习交流,切勿用于非法用途。转载请备注来源!
如果您对此有任何有建树的想法都可以请您发送邮件至 cople@139.com 或点击右侧 私信:鲨鱼,我们将尽快处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索