售后 :021-51299298 售前 :18217721733 联系我们

phpcms任意页面调用全站最新文章内容(可以跨多模型)

上海知九信息 phpcms 跨模型调用 全站调用 2020-08-29

 

phpcms想要调用全站的最新文章内容,需要进行一点点二次开发,具体方法如下。

找到/phpcms/libs/functions/extention.func.php,在其最下面添加如下代码:

/********************多模型调用最新内容"************************/
/**
* @param  $modelid 模型id,多个值之间用,隔开
* @param  $limit 数据调用量
* @param  $where 条件语句
*/
/*function news($modelid="1",$limit="0,20",$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,username,inputtime FROM v9_{$name['tablename']}"." ".$where;
    $lianhe=' UNION ALL ';
}
$time=time();
$sql=$sql." 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];
}*/

去掉function news开头的/*和末尾的*/注释符。

前端模板调用示例:

/*{php $news = news("1,6,7","0,10")}
{loop $news $r}
    {$r['title']}
{/loop}*/

去掉开头的/*和结尾的*/注释符。

说明:

$news = news("1,6,7","0,10")中的"1,6,7"是传给$modelid的参数,表示读取模型id为1,6,7的三个模型下所有栏目的数据;"0,10"是传给$limit的参数,表示从第一条数据(偏移量为0)开始,共读取10条数据。

news()函数默认是读取模型id为1的模型下所有栏目数据,即phpcms系统原始的文章模型下的数据;默认读取最新的20条数据。另外,函数中只读取了各栏目主表中的id、catid、title、url、username、inputtime等字段的数据,各自对应的副表为"主表名_data",需要副表和其他字段数据的,自己动手改造下。

然后,就可以在首页或任意页面跨模型调用phpcms全站最新数据了。