调用多个栏目的最新文章实现步骤
打开 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; } } 这样,标签 newcontent 就可以在模板中直接使用。如要获取特定几个栏目下的所有新闻的排序:
<h3 class="widget-title">最近新闻</h3> <ul> {pc:content action="newcontent" num="10" $catid="11,12"} {loop $data $r} <li> <a href="{$r[url]}" title="{$r[title]}">{$r[title]}</a> </li> {/loop} {/pc} </ul>这里指定的是获取 catid 为 11、12 两个栏目下的新闻。如果不指定参数 catid,则获取整个站点下所有栏目的内容(不一定是新闻栏目);默认的排序方式为 id 降序,可指定参数 order 设置多种排序方式,如时间升序、降序等,参加函数代码。以上是青锋建站给大家分享的如何获取phpcms全部栏目的最新内容的实现方法,青锋建站承接网站建设服务,包括织梦建站,phpcms建站,wordpress建站,CMS系统开发,SEO网站优化,网络营销推广,企业邮箱,400电话。
文章来源:https://my.oschina.net/codercpf/blog/1620575
转载请注明来源网址:青锋建站-http://www.sjzphp.com/cmsxitong/phpcms/latest_1410.html