织梦DedeCMS栏目交叉调用自定义模型字段的方法
以前讲过DedeCMS内容模型自定义字段及调用方法,后来也因为一些数据的调用说了DedeCMS专题页节点文档调用自定义模型字段方法,DedeCMS的自定义模型和字段是采用附加表的形式储存在数据库中,这样很多特殊的页面要实现自定义字段的调用就不一定能行得通,比如AB模板网要在交叉栏目中调用自定义字段的内容,用了下面的代码获取的内容为空:
{dede:arclist addfields='add1,add2,...' channelid='自定义内容模型的ID' row='10' orderby='pubdate'} //(add1,add2为自字义的字段名)
[field:add1/]//(字段名1 调用 )
[field:add2/]//(字段名2 调用 )
{/dede:arclist}
看来常规的方法是实现不了的,淘站网这个时候想起了Dede的万能标签[field:id runphp='yes'],我们直接调取数据库的内容,越过dede的底层标签就有好了,于是便有了下面这段代码:
[field:id runphp='yes']
$id=@me;
global $dsql;
$row=$dsql->getone("select aid,hx from `dede_addon17` where aid=$id");
@me=$row["hx"] ;
[/field:id]
代码释义:查询附加表dede_addon17的自定义字段hx,输出自定义字段hx的内容。这样就可以实现了栏目交叉的自定义模型字段调用,因为一个一个的调用会显得代码比较臃肿也加大了服务器的负担,于是我们可以批量查询并输出,代码如下:
[field:id runphp='yes']
$id=@me;
global $dsql;
$info='';
$row=$dsql->getone("select aid,hx,fg,sjsf,zj from `dede_addon17` where aid=$id");
$info='<p class="p2"><span><strong>户型:</strong>'.$row["hx"].'</span><span><strong>风格:</strong>'.$row["fg"].'</span></p> <p class="p2"><span><strong>设计收费标准:</strong>'.$row["sjsf"].'</span><span><strong>造价:</strong>'.$row["zj"].'</span></p>';
@me=$info;
[/field:id]
大家根据自己的自定义字段存储的表以及相关自定义字段名来分别做相应修改就好了。