Typecho随机文章与同分类下随机文章的实现
导读:在制作Typecho主题时,有的时候会想弄个随机推荐文章的功能,所以我就简单弄了个函数,可以随机输出n篇文章,同时追加一些参数还可以输出当前文章分类下的随机文章,具体如下: 函数部分在主题functions.php文件中添加如下函数。cla...
在制作Typecho主题时,有的时候会想弄个随机推荐文章的功能,所以我就简单弄了个函数,可以随机输出n篇文章,同时追加一些参数还可以输出当前文章分类下的随机文章,具体如下: 函数部分
在主题functions.php
文件中添加如下函数。
class Widget_Post_tongleisuiji extends Widget_Abstract_Contents
{
public function __construct($request, $response, $params = NULL)
{
parent::__construct($request, $response, $params);
$this->
parameter->
setDefault(array('pageSize' =>
$this->
options->
commentsListSize, 'parentId' =>
0, 'ignoreAuthor' =>
false));
}
public function execute()
{
$adapterName = $this->
db->
getAdapterName();
//兼容非MySQL数据库
if($adapterName == 'pgsql' || $adapterName == 'Pdo_Pgsql' || $adapterName == 'Pdo_SQLite' || $adapterName == 'SQLite'){
$order_by = 'RANDOM()';
}
else{
$order_by = 'RAND()';
}
$select = $this->
select()->
from('table.contents')
->
join('table.relationships', 'table.contents.cid = table.relationships.cid');
if($this->
parameter->
mid>
0){
$select->
where('table.relationships.mid = ?', $this->
parameter->
mid);
}
$select->
where('table.contents.cid >
?', $this->
parameter->
cid)
->
where("table.contents.password IS NULL OR table.contents.password = ''")
->
where('table.contents.type = ?', 'post')
->
limit($this->
parameter->
pageSize)
->
order($order_by);
$this->
db->
fetchAll($select, array($this, 'push'));
}
}
调用输出
在主题需要的地方调用如下内容即可随机输出多篇文章,样式需要自行美化。
widget('Widget_Post_tongleisuiji@suiji', 'mid='.$mid.'&
pageSize='.$size.'&
cid='.$cid)->
to($to);
?>
have()): ?>
next()): ?>
title();
?>
excerpt(150, '...');
?>
permalink() ?>
拓展内容
在文章页面下,调用这个函数时可以这样填写参数
$cid=$this->
cid;
//这样设置下cid,随机推荐文章时就不会与当前文章重复了
$mid=$this->
categories[0]['mid'];
//这样设置函数即可获得文章的第一个分类,然后随机输出这个分类下的文章
$size=5;
有的时候我们其他页面和文章页面都是在同一处输出随机文章,此时我们就可以使用if
判断来为不同页面输入不同参数,如
$mid='';
$cid=0;
$size=5;
if ($this->
is('post')){
$cid=$this->
cid;
$mid=$this->
categories[0]['mid'];
$size=5;
}
linkCard('.post-content','0');
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Typecho随机文章与同分类下随机文章的实现
本文地址: https://pptw.com/jishu/6632.html