dede:list标签支持调用栏目自定义字段比如栏目图片typeimg
我们栏目自定义图片好了后。如果想要在列表页调用。是实现不了。或者想调用其他栏目自定义字段。都是不行的。
比如:
{dede:list pagesize ='15' channelid="17" addfields=""}[field:typeimg/]
{/dede:list}
这样栏目图片出不来。我们要改下代码。目标include/arc.listview.class.php,
查找一下sql 吧要查询出来的字段都加名称都加上 。
有二段:
//获得交叉栏目ID
if($this->TypeLink->TypeInfos['cross']>0 && $this->TypeLink->TypeInfos['ispart']==0)
{
$selquery = '';
if($this->TypeLink->TypeInfos['cross']==1)
{
$selquery = "SELECT id,topid,typeimg FROM `it_arctype` WHERE typename LIKE '{$this->Fields['typename']}' AND id<>'{$this->TypeID}' AND topid<>'{$this->TypeID}' ";
}
else
{
$this->Fields['crossid'] = preg_replace('/[^0-9,]/', '', trim($this->Fields['crossid']));
if($this->Fields['crossid']!='')
{
$selquery = "SELECT id,topid,typeimg FROM `it_arctype` WHERE id in({$this->Fields['crossid']}) AND id<>{$this->TypeID} AND topid<>{$this->TypeID} ";
}
}
if($selquery!='')
{
$this->dsql->SetQuery($selquery);
$this->dsql->Execute();
while($arr = $this->dsql->GetArray())
{
$this->CrossID .= ($this->CrossID=='' ? $arr['id'] : ','.$arr['id']);
}
}
}
}//!error
第二段
//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)
if(preg_match('/hot|click|lastpost/', $orderby))
{
$query = "SELECT arc.*,tp.typedir,tp.typename,tp.typeimg,tp.isdefault,tp.defaultname,
tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
$addField
FROM `it_archives` arc
LEFT JOIN `it_arctype` tp ON arc.typeid=tp.id
$addJoin
WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row";
}
//普通情况先从arctiny表查出ID,然后按ID查询(速度非常快)
else
{
$t1 = ExecTime();
$ids = array();
$query = "SELECT id FROM `it_arctiny` arc WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row ";
$this->dsql->SetQuery($query);
$this->dsql->Execute();
while($arr=$this->dsql->GetArray())
{
$ids[] = $arr['id'];
}
$idstr = join(',',$ids);
if($idstr=='')
{
return '';
}
else
{
$query = "SELECT arc.*,tp.typedir,tp.typename,tp.typeimg,tp.corank,tp.isdefault,tp.defaultname,
tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
$addField
FROM `it_archives` arc LEFT JOIN `it_arctype` tp ON arc.typeid=tp.id
$addJoin
WHERE arc.id in($idstr) $ordersql ";
}
$t2 = ExecTime();
//echo $t2-$t1;
}
【责任编辑:小戴工程师】
上一篇:dede个人中心调用会员其他字段和自定义字段调用 下一篇:dede:pagelist修改支持bootstrap分页样式