当前位置:网站首页 / 小海分享 / 正文

phpcms V9调用多个模型中的最新内容的解决方法

时间:2015年11月01日 | 作者 : angelsea | 分类 : 小海分享 | 浏览: 1168次 | 评论 0

很多时候,希望调用多个模型下的最新内容,但是因为V9的模型使用分表储存,使用GET来IN catid却要连表查询十分麻烦,所以使用下面的办法即可搞定:

第一步:

phpcms\libs\functions\extention.func.php

里面增加

/*
参数说明:
$limit支持0,10这样的参数默认10条
$modelid支持 1,11,33 默认只调用模型1基本新闻的数据
注:不同的模型要确保调用的公共字段一样
否则会出错如每个表中都必须含有id,catid,title,url,inputtime
$where默认为空  ,需要 指定栏目  如 catid=1或者catid in(12,33)
*/

function news($limit="0,10",$modelid="1",$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
第二步:
调用的方式为:
<?php $recent=news(“0,8“,”1,12“);?>
{loop $recent $r}
<li><a href=”{$r[‘url’]}” target=”_blank” title=”{$r[‘title’]}”>{str_cut($r[title],54,”)}</a></li>
{/loop}
{/pc}

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


推荐您阅读更多有关于“”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  • 订阅本站的 RSS 2.0 新闻聚合
最近发表
网站分类
搜索
标签
最新留言
文章归档
网站收藏
Top