html文章置顶代码,首页置顶文章 - Typecho Coder - 常用模板代码

首页置顶文章 2019-08-19 <?php

$sticky = '3'; //置顶的文章cid,按照排序输入, 请以半角逗号或空格分隔

if($sticky && $this->is('index') || $this->is('front')){

$sticky_cids = explode(',', strtr($sticky, ' ', ','));//分割文本

$sticky_html = "[置顶] "; //置顶标题的 html

$db = Typecho_Db::get();

$pageSize = $this->options->pageSize;

$select1 = $this->select()->where('type = ?', 'post');

$select2 = $this->select()->where('type = ? && status = ? && created < ?', 'post','publish',time());

//清空原有文章的列队

$this->row = [];

$this->stack = [];

$this->length = 0;

$order = '';

foreach($sticky_cids as $i => $cid) {

if($i == 0) $select1->where('cid = ?', $cid);

else $select1->orWhere('cid = ?', $cid);

$order .= " when $cid then $i";

$select2->where('table.contents.cid != ?', $cid); //避免重复

}

if ($order) $select1->order(null,"(case cid$order end)"); //置顶文章的顺序 按 $sticky 中 文章ID顺序

if ($this->_currentPage == 1) foreach($db->fetchAll($select1) as $sticky_post){ //首页第一页才显示

$sticky_post['sticky'] = $sticky_html;

$this->push($sticky_post); //压入列队

}

$uid = $this->user->uid; //登录时,显示用户各自的私密文章

if($uid) $select2->orWhere('authorId = ? && status = ?',$uid,'private');

$sticky_posts = $db->fetchAll($select2->order('table.contents.created', Typecho_Db::SORT_DESC)->page($this->_currentPage, $this->parameter->pageSize));

foreach($sticky_posts as $sticky_post) $this->push($sticky_post); //压入列队

$this->setTotal($this->getTotal()-count($sticky_cids)); //置顶文章不计算在所有文章内

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值