【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,多个模型用,分开