期权记-ETF期权开户导航 期权记是专业的50ETF300ETF期权开户投资交易导航

zblog指定调用某个分类的的随机文章

关于zbp的随机显示方案,之前就写过一个教程,当然代码不是我写的,我只是“搬运工”而已,其实并不是很完美,这不今天比较完美的方案就出来了,而且可以调用某个分类的的随机文章。

function GetRandArticles($count , $where = '' , $real = ''){      global $zbp;            //判断一下网站文章总数是不是少于需要的随机数量,少就直接获取文章并返回,      if ($zbp->cache->all_article_nums <= $count) return GetList($count);            //固定一下要调用的文章数量,如果第一次调用后的数量不够数的话,还得再次调用自身函数,得需要这个值      if (!$real) $real = $count;            //定义全局变量,因为可能会需要调用多次本函数,所以得把获得得文章存在全局变量中      if (!isset($GLOBALS['articles'])) $GLOBALS['articles'] = array();            //定义全局变量,同上。将已获得得文章ID存此变量      if (!isset($GLOBALS['randid'])) $GLOBALS['randid'] = array();      //sql where 判定,如果要限定某一个作者,或者说分类,就可以在这里修改      $where = $where?:array(array('=', 'log_Type', '0') , array('=' , 'log_Status' , '0'));            //获取所有文章最大ID和最小ID      $sql = $zbp->db->sql->Select($zbp->table['Post'] , "MIN(log_ID),MAX(log_ID)" , $where);      $res = $zbp->db->Query($sql);      $limits = array_values($res[0]);            //生成上面最大ID和最小ID之间随机数      $ids = $or = array();      for ($i = 0; $i < $count; $i++) {          $ids[] = mt_rand($limits[0],$limits[1]);      }            //拼接sql or 语句。      foreach ($ids as $id) {          //检查一下获得的文章ID有没有在之前就获取到过,防止有重复的ID          if (array_search($id,$GLOBALS['randid']) !== false) continue;          $or[] = array('log_ID',$id);          $GLOBALS['randid'][] = $id;      }            //也可能本次获取的随机数都是和之前获取的全部重复了,所以得判断一下      if ($or) {          $w = $where;          $ors = array('array',$or);          $w[] = $ors;          //获取文章          $res = $zbp->GetArticleList('*' , $w);          //将获得得文章存在全局变量中          $GLOBALS['articles'] = array_merge($GLOBALS['articles'],$res);      }      //计算一下,本次获取的文章数量有没有够数。      if (($count = $real - count($GLOBALS['articles'])) > 0) {          //不够数继续调用自身函数再次获取          return GetRandArticles($count , $where , $real);      }else{          //够数,返回文章对象数组          return $GLOBALS['articles'];      }}

调用代码:

//参数1:文章数量,10为调用的文章数量  foreach (GetRandArticles(10) as $article) {      echo $article->Title;  }  //参数2:$where 数组 (可选),获取分类ID为21下的随机10篇文章  GetRandArticles(10,array(array('=', 'log_Type', '0') , array('=' , 'log_Status' , '0'),array('=' , 'log_CateID' , 21)))

本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。

微信扫码关注

更新实时通知

作者:期权小韭菜 分类:网页教程 浏览:
请先 登录 再评论,若不是会员请先 注册