最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
phpcms v9全站最新文章调用几个方法
时间:2022-06-25 16:22:54 编辑:袖梨 来源:一聚教程网
修改 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} {/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} {/loop} {/pc} |
解释:
红色数字是调用条数,从0开始调用8条
蓝色数字模型ID,不是栏目的ID,多个模型用,分开
相关文章
- 人们熟悉的寄居蟹属于以下哪种分类 神奇海洋11月21日答案 11-21
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21