上海知九信息 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全站最新数据了。
本文由 @上海知九信息 原创发布,转载请注明出处和原文链接:https://www.zhi9.cn/doc/90.html。