【phpcms数据库配置文件】phpcms v9全站最新文章调用几个方法

更新时间:2019-08-07    来源:php安装    手机版     字体:

【www.bbyears.com--php安装】

修改 phpcms/modules/content/classes/content_tag.class.php  在最后面的 }

上面添加以下代码:

 代码如下 public function newcontent($data){
  $num = intval($data["limit"]) ? intval($data["limit"]) : "20";
  // 设置排序
  switch($data["order"]){
  case "1":
  $order = " `id` ASC ";
  break;
  case "2":
  $order = " `id` DESC ";
  break;
  case "3":
  $order = " `inputtime` ASC ";
  break;
  case "4":
  $order = " `inputtime` DESC ";
  break;
  case "5":
  $order = " `updatetime` ASC ";
  break;
  case "6":
  $order = " `updatetime` DESC ";
  break;
  default:
  $order = " `id` DESC ";
  }
  if($data["catid"]){
  $catids = explode(",", $data["catid"]);
  foreach($catids as $catid){
  $catid = intval($catid);
  if(empty($catid))continue;
  $this->set_modelid($catid);
  $where = $this->category[$catid]["child"] ? " `catid` IN (".$this->category[$catid]["arrchildid"].")" : " `catid` = $catid";
  $datas = $this->db->select($where, "*", $num, $order);
  $data[$catid]["data"] = $datas;
  // 记录本次的文章数
  $data["num"][] = count($datas);
  $model_num++;
  }
  }else{
  $models = getcache("model", "commons");
  foreach($models as $model){
  $this->db->set_model($model["modelid"]);
  $datas = $this->db->select("", "*", $num, $order);
  $data[$model["modelid"]]["data"] = $datas;
  // 记录本次的文章数
  $data["num"][] = count($datas);
  $model_num++;
  }
  }
  if($data){
  // 获取每个模型应该截取的条数
  $num = ceil($num/$model_num);
  // 循环条数记录用于找出条数不满足的数量然后进行平均
  $w_num = $w_num_t = "";
  foreach($data["num"] as $num_t){
  if($num_t < $num){
  $w_num += $num-$num_t;
  $w_num_t++;
  }
  }
  // 判断是否有不满足平均数的 如果有那么就增加平均值
  if($w_num_t){
  $num += ceil($w_num/($model_num-$w_num_t));
  }
  $datas = array();
  foreach($data as $r){
  $r_n = "";
  if(is_array($r["data"]))
  foreach($r["data"] as $r_t){
  $datas[] = $r_t;
  if(++$r_n == $num)break;
  }
  }
  return $datas;
  }else{
  return false;
  }
  }


 

然后我们在需要调用全站最新的页面中调用下面的标签:

 代码如下 {pc:content action=”newcontent”  num=15}

    {loop $data $r}{date(‘m-d’,$r[inputtime])} {str_cut($r[title],57,”)}{/loop}

    {/pc}

    这样就可以获取到全站最新的15条数据。默认是调用20条最新,如果不设置。

    catid: 可有可无  加了就只调用指定栏目的信息  多个栏目请使用英文半角的 ,间隔

    order:排序 参数值:1-7  具体的含义在代码里面很容易看明白 不祥述

    num:调用数量  不指定默认调用20条

    还有一种方案,代码放置的位置是不一样的。

    V9的模型使用分表储存,调用多个模型下的最新内容使用GET来IN catid却要连表查询十分麻烦,所以使用下面的办法即可:

    第一步:

    phpcms/libs/functions/extention.func.php

    里面增加

     代码如下 function news($limit="",$modelid="",$where="")
    {
      $db=pc_base::load_model("content_model");
      if((strpos($modelid,",")>=0))
      {
       $modelid=explode(",",$modelid);
       $midarr=$dot="";
       foreach($modelid as $mid)
       {
        $midarr=$midarr.$dot.$mid;
        $dot=",";
       }
       $sq="`modelid` IN ({$midarr})";
      }
      else
      {
       $sq="`modelid`={$modelid}";
      }
      $db->table_name="v9_model";
      $models=$db->select($sq,"tablename");
      $sql="";
      $lianhe="";
      foreach($models as $name)
      {
       $sql=$sql.$lianhe."SELECT id,catid,title,url,inputtime FROM v9_{$name["tablename"]}";
       $lianhe=" UNION ALL ";
      }
     
      $time=time();
      $sql=$sql." ".$where." order by inputtime desc limit  ".$limit;
     
      $allnews=$db->query($sql);
      while($r = $db->fetch_array($allnews))
      {
       if($keyfield)
       {
        $key = $r[$keyfield];
        $array[$key] = $r;
       }
       else
       {
        $array[] = $r;
       }
      }
      return $array[0];
    }

     

    以上代码需要注意的是里面表前缀,这里是V9,使用的时候改成你自己的表前缀,默认是V9

    第二步:

    调用的方式为:

     代码如下
    {loop $recent $r}
    {str_cut($r[title],54,”)}
    {/loop}
    {/pc}

    解释:
    红色数字是调用条数,从0开始调用8条
    蓝色数字模型ID,不是栏目的ID,多个模型用,分开

    本文来源:http://www.bbyears.com/jiaocheng/60746.html

热门标签

更多>>

本类排行