Typecho随机/热门文章

随机文章

先在模板的function.php中加入随机文章函数代码:

function theme_random_posts(){
    $defaults = array(
        'number' => 5,
        'before' => '<ul class="list">',
        'after' => '</ul>',
        'xformat' => '<li><a href="{permalink}" title="{title}">{title}</a></li>'
    );
    $db = Typecho_Db::get();

    $sql = $db->select()->from('table.contents')
        ->where('status = ?','publish')
        ->where('type = ?', 'post')
        ->where('created <= unix_timestamp(now())', 'post') //添加这一句避免未达到时间的文章提前曝光
        ->limit($defaults['number'])
        ->order('RAND()');

    $result = $db->fetchAll($sql);
    echo $defaults['before'];
    foreach($result as $val){
        $val = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($val);
        echo str_replace(array('{permalink}', '{title}'),array($val['permalink'], $val['title']), $defaults['xformat']);
    }
    echo $defaults['after'];
}

然后再需要调用随机文章的地方插入此代码(如sidebar.php):

<?php theme_random_posts();?>
这样,Typecho就可以很轻松地显示随机文章了。

热门文章

/**
@param array $result
@param int $num
@throws Typecho_Db_Exception
Typecho热门文章显示函数代码
* @throws Typecho_Exception
 * 热门文章
 */
function hotPosts(&$result, $num = 5)
{
    $db = Typecho_Db::get();
    $sql = $db->select()->from('table.contents')
        ->where('type = ?', 'post')
        ->where('status = ?', 'publish')
        ->limit($num)
        ->order('commentsNum', Typecho_Db::SORT_DESC);
    $result = $db->fetchAll($sql);
    foreach ($result as &$item) {
        $item = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($item);
    }
}

添加新评论

已有 0 条评论