Typecho获取随机文章函数

Typecho教程 typecho 2019-07-29
function getRandomPosts($random=5){
    $db = Typecho_Db::get();
    $adapterName = $db->getAdapterName();//兼容非MySQL数据库
    if($adapterName == 'pgsql' || $adapterName == 'Pdo_Pgsql' || $adapterName == 'Pdo_SQLite' || $adapterName == 'SQLite'){
        $order_by = 'RANDOM()';
    }else{
        $order_by = 'RAND()';
    }
    $sql = $db->select()->from('table.contents')
        ->where('status = ?','publish')
        ->where('table.contents.created <= ?', time())
        ->where('type = ?', 'post')
        ->limit($random)
        ->order($order_by);

$result = $db->fetchAll($sql);
if($result){
    foreach($result as $val){
        $obj = Typecho_Widget::widget('Widget_Abstract_Contents');
        $val = $obj->push($val);
        $post_title = htmlspecialchars($val['title']);
        $permalink = $val['permalink'];
        echo '<a href="'.$permalink.'" title="'.$post_title.'"><h5 class="card-title">'.$post_title.'</h5></a>';
    }
}
}

需要使用时在模板中调用<?php getRandomPosts(10);?>即可,这个随机文章函数的好处就是不光兼容mysql还兼容sqlite数据库。

完整使用方法

  • 1.将上面完整的随机文章代码丢进主题文件夹的function.php里面,保存;
  • 2.在需要添加随机文章的地方加上代码:<?php getRandomPosts(10);?>,保存;
  • 3.刷新页面,搞定!

文章转自:http://www.7tec.cn/246.html

4条评论

    流年伴夏

    感谢大佬分享,已完成,稍微改了下样式,function里面的样式,可能和模板自带的css不匹配,需要稍微处理下

    游客 Windows7 55天前回复

      泽泽社长
      @流年伴夏

      嗯,根据自己主题改好就行,代码是死的人是活的

      作者 MacOS 55天前回复

        流年伴夏
        @泽泽社长

        大佬多多分享好用的代码吧,哈哈哈哈

        游客 Windows7 55天前回复

    小萤火虫

    谢谢大佬分享!

    游客 Windows10 81天前回复

智能推荐