码库记事本

码库记事本

Phpcms V9.5.4调用最新文章列表和多栏目调用

小诸哥 0

PHPcms调用默认表最新文章有一下两种方法:

1. get标签形式调用

2. 修改标签代码实现最新文章调用

下面我们看看具体是实现方法:

第一种方法:用GET标签调用

这种方法不用修改PHPCMS的核心代码,就可以达到模型表的最新数据调用,具体代码片段如下:

  1. {pc:get sql="SELECT * from v9_news where status=99 and catid in(21,22,23,24,25) order by id DESC" start=="7" num="7" return="data"}   
  2. {loop $data $r}   
  3. <li><a href="{$r[url]}" title="{$r[title]}" target="_blank">{str_cut($r['title'],40)}({date('m-d',$r[inputtime])})</span></a></li>   
  4. {/loop}   
  5. {/pc}   

第二种方法:修改标签代码

PHPCMS的标签默认只能调用单个主栏目下面的子栏目的文章,如果不填写栏目则无法调用数据,填写多个栏目ID只调取首个栏目ID的文章,为什么这么说呢?看看代码就知道原因所在了.

  1. /**  
  2.  * 列表页标签  
  3.  * @param $data  
  4.  */   
  5. public function lists($data) {   
  6.     $catid = intval($data['catid']);   
  7.     if(!$this->set_modelid($catid)) return false;   
  8.     if(isset($data['where'])) {   
  9.         $sql = $data['where'];   
  10.     } else {   
  11.         $thumb = intval($data['thumb']) ? " AND thumb != ''" : '';   
  12.         if($this->category[$catid]['child']) {   
  13.             $catids_str = $this->category[$catid]['arrchildid'];   
  14.             $pos = strpos($catids_str,',')+1;   
  15.             $catids_str = substr($catids_str$pos);   
  16.             $sql = "status=99 AND catid IN ($catids_str)".$thumb;   
  17.         } else {   
  18.             $sql = "status=99 AND catid='$catid'".$thumb;   
  19.         }   
  20.     }   
  21.     $order = $data['order'];   
  22.    
  23.     $return = $this->db->select($sql'*'$data['limit'], $order'''id');   
  24.                        
  25.     //调用副表的数据   
  26.     if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) {   
  27.         $ids = array();   
  28.         foreach ($return as $v) {   
  29.             if (isset($v['id']) && !emptyempty($v['id'])) {   
  30.                 $ids[] = $v['id'];   
  31.             } else {   
  32.                 continue;   
  33.             }   
  34.         }   
  35.         if (!emptyempty($ids)) {   
  36.             $this->db->table_name = $this->db->table_name.'_data';   
  37.             $ids = implode('/',/''$ids);   
  38.             $r = $this->db->select("`id` IN ('$ids')"'*''''''''id');   
  39.             if (!emptyempty($r)) {   
  40.                 foreach ($r as $k=>$v) {   
  41.                     if (isset($return[$k])) $return[$k] = array_merge($v$return[$k]);   
  42.                 }   
  43.             }   
  44.         }   
  45.     }   
  46.     return $return;   

修改为添加所以栏目ID来查询全表数据,这样和GET方法几乎没什么区别,只是标签形式不同而已.

  1. /**  
  2.  * 列表页标签  
  3.  * @param $data  
  4.  */   
  5. public function lists($data) {   
  6.     $catid = $data['catid'];   
  7.     $cid = intval( <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">$catid </span>);   
  8.     if(!$this->set_modelid($cid)) return false;   
  9.     if(isset($data['where'])) {   
  10.         $sql = $data['where'];   
  11.     } else {   
  12.         $thumb = intval($data['thumb']) ? " AND thumb != ''" : '';   
  13.         if($cat_array=explode(',',$catid) ){     
  14.             $catids_str = $catid;     
  15.             foreach($cat_array as $k => $v){     
  16.                 if($this->category[$v]['child']) {     
  17.                     $catids_str .= ','.$this->category[$v]['arrchildid'];    
  18.                 }     
  19.             }     
  20.             $sql = "status=99 AND catid IN ($catids_str)".$thumb;     
  21.         }else {   
  22.             $sql = "status=99 AND catid='$catid'".$thumb;   
  23.         }   
  24.     }   
  25.     $order = $data['order'];   
  26.    
  27.     $return = $this->db->select($sql'*'$data['limit'], $order'''id');   
  28.                        
  29.     //调用副表的数据   
  30.     if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) {   
  31.         $ids = array();   
  32.         foreach ($return as $v) {   
  33.             if (isset($v['id']) && !emptyempty($v['id'])) {   
  34.                 $ids[] = $v['id'];   
  35.             } else {   
  36.                 continue;   
  37.             }   
  38.         }   
  39.         if (!emptyempty($ids)) {   
  40.             $this->db->table_name = $this->db->table_name.'_data';   
  41.             $ids = implode('/',/''$ids);   
  42.             $r = $this->db->select("`id` IN ('$ids')"'*''''''''id');   
  43.             if (!emptyempty($r)) {   
  44.                 foreach ($r as $k=>$v) {   
  45.                     if (isset($return[$k])) $return[$k] = array_merge($v$return[$k]);   
  46.                 }   
  47.             }   
  48.         }   
  49.     }   
  50.     return $return;   

标签调用形式,默认第一个栏目ID为模型表:

  1. {pc:content action="lists" catid="1,2,3,4,5" order="listorder DESC,inputtime DESC,id DESC" moreinfo="1"  start="7" num="7"}   
  2.  {loop $data $k $v}    
  3.   <li><a href="{$v[url]}" title="{$v[title]}" target="_blank"{title_style($v[style])}>{str_cut($v[title], 100)}</a></li>   
  4.  {/loop}   
  5. {/pc}  

标签: cms 调用 文章列表 列表 多栏目 栏目