phpcms v9不影响升级调用全部多个模型最新文章教程
phpcms v9 N多个模型调用全部最新文章
实在是一个很头疼的问题
今天终于花了点时间整理出来一个啦
将此段函数放在扩展函数 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,",")>=1))
{
$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];
}
前台模板调用:
<?php $recent=news("0,8","1,11");?>
{loop $recent $r}
<li><a href="{$r[url]}" title="{$r[title]}">{str_cut($r[title],36,'')}</a></li>
{/loop}
{/pc}
phpcms v9 N多个模型调用全部最新文章
实在是一个很头疼的问题
今天终于花了点时间整理出来一个啦
将此段函数放在扩展函数 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,",")>=1))
{
$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];
}
前台模板调用:
<?php $recent=news("0,8","1,11");?>
{loop $recent $r}
<li><a href="{$r[url]}" title="{$r[title]}">{str_cut($r[title],36,'')}</a></li>
{/loop}
{/pc}