首页后端开发JAVATypecho随机文章与同分类下随机文章的实现

Typecho随机文章与同分类下随机文章的实现

时间2023-04-23 20:51:02发布访客分类JAVA浏览738
导读:在制作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核实处理,我们将尽快回复您,谢谢合作!

phpposttypecho函数

若转载请注明出处: Typecho随机文章与同分类下随机文章的实现
本文地址: https://pptw.com/jishu/6632.html
Banner——第三阶段考核——大学生选课管理系统 使用PHP通过svg生成base64文字首字头像

游客 回复需填写必要信息