首页 教程ZBlog正文

ZBlog PHP 文章列表按ID排序

刚查了下ZBlog PHP自带函数,感觉还是用GetList函数方便,但GetList函数的排序方式是写死的。array('log_PostTime' => 'DESC&

刚查了下ZBlog PHP自带函数,感觉还是用GetList函数方便,但GetList函数的排序方式是写死的。

array('log_PostTime' => 'DESC')

无奈,只能再把函数重写一遍。

在相应主题主目录下新建include.php。写以下函数。

然后,调用方式同GetList。

/**
 * 获取文章列表
 * @param int $count 数量
 * @param null $cate 分类ID
 * @param null $auth 用户ID
 * @param null $date 日期
 * @param null $tags 标签
 * @param null $search 搜索关键词
 * @param null $option
 * @return array|mixed
 */
function GetListtcid($count = 10, $cate = null, $auth = null, $date = null, $tags = null, $search = null, $option = null) {
 global $zbp;
 if (!is_array($option)) {
  $option = array();
 }
 if (!isset($option['only_ontop']))
  $option['only_ontop'] = false;
 if (!isset($option['only_not_ontop']))
  $option['only_not_ontop'] = false;
 if (!isset($option['has_subcate']))
  $option['has_subcate'] = false;
 if (!isset($option['is_related']))
  $option['is_related'] = false;
 if ($option['is_related']) {
  $at = $zbp->GetPostByID($option['is_related']);
  $tags = $at->Tags;
  if (!$tags)
   return array();
  $count = $count + 1;
 }
 if ($option['only_ontop'] == true) {
  $w[] = array('=', 'log_IsTop', 0);
 } elseif ($option['only_not_ontop'] == true) {
  $w[] = array('=', 'log_IsTop', 1);
 }
 $w = array();
 $w[] = array('=', 'log_Status', 0);
 $articles = array();
 if (!is_null($cate)) {
  $category = new Category;
  $category = $zbp->GetCategoryByID($cate);
  if ($category->ID > 0) {
   if (!$option['has_subcate']) {
    $w[] = array('=', 'log_CateID', $category->ID);
   } else {
    $arysubcate = array();
    $arysubcate[] = array('log_CateID', $category->ID);
    foreach ($zbp->categorys[$category->ID]->SubCategorys as $subcate) {
     $arysubcate[] = array('log_CateID', $subcate->ID);
    }
    $w[] = array('array', $arysubcate);
   }
  }
 }
 if (!is_null($auth)) {
  $author = new Member;
  $author = $zbp->GetMemberByID($auth);
  if ($author->ID > 0) {
   $w[] = array('=', 'log_AuthorID', $author->ID);
  }
 }
 if (!is_null($date)) {
  $datetime = strtotime($date);
  if ($datetime) {
   $datetitle = str_replace(array('%y%', '%m%'), array(date('Y', $datetime), date('n', $datetime)), $zbp->lang['msg']['year_month']);
   $w[] = array('BETWEEN', 'log_PostTime', $datetime, strtotime('+1 month', $datetime));
  }
 }
 if (!is_null($tags)) {
  $tag = new Tag;
  if (is_array($tags)) {
   $ta = array();
   foreach ($tags as $t) {
    $ta[] = array('log_Tag', '%{' . $t->ID . '}%');
   }
   $w[] = array('array_like', $ta);
   unset($ta);
  } else {
   if (is_int($tags)) {
    $tag = $zbp->GetTagByID($tags);
   } else {
    $tag = $zbp->GetTagByAliasOrName($tags);
   }
   if ($tag->ID > 0) {
    $w[] = array('LIKE', 'log_Tag', '%{' . $tag->ID . '}%');
   }
  }
 }
 if (is_string($search)) {
  $search=trim($search);
  if ($search!=='') {
   $w[] = array('search', 'log_Content', 'log_Intro', 'log_Title', $search);
  }
 }
 $articles = $zbp->GetArticleList('*', $w, null, $count, null, false);
 if ($option['is_related']) {
  foreach ($articles as $k => $a) {
   if ($a->ID == $option['is_related'])
    unset($articles[$k]);
  }
  if (count($articles) == $count){
   array_pop($articles);
  }
 }
 return $articles;
}


共收到 0 条回复

访客访客