phpcmsV9呼叫多個模型中的最新內容的解決方法

科技小能手發表於2017-11-12

很多時候,希望呼叫多個模型下的最新內容,但是因為V9的模型使用分表儲存,使用GET來IN catid卻要連表查詢十分麻煩,所以使用下面的辦法即可搞定:

第一步:

phpcmslibsfunctionsextention.func.php

裡面增加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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

第二步:

呼叫的方式為:

1
2
3
4
5
<?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,多個模型用,分開


本文轉自 gutaotao1989 51CTO部落格,原文連結:http://blog.51cto.com/taoyouth/1609769



相關文章