想要实现织梦DedeCMS任意位置调用自定义字段,就得先了解DEDECMS自定义字段其实就是添加了个附加的表,要调用附加表的内容有list和arclist两种方法。譬如增加一个自定义字段商品的价格price
①.list调用附加表字段
1
2
3
|
{dede:list pagesize='5'}
<
li
><
a
href
=
"[field:arcurl/]"
><
img
src
=
"[field:litpic/]"
/></
a
><
span
>[field:price/]</
span
></
li
>
{/dede:list}
|
用list调取自定义字段的时候,一定要注意在后台建立字段的时候,前台参数那里的“使字段可以在列表的底层模板中获得”这个选项勾选,如下图。
当勾选之后,在当前的内容模型管理的基本设置里的列表附加字段会自动加入字段名称,如下图。
②.arclist调用附加表字段
1
2
3
|
{dede:arclist row='5' addfields='price' channelid='3'}
<
li
></
a
href
=
"[field:arcurl/]"
><
img
src
=
"[field:litpic/]"
/></
a
><
span
>[field:price/]</
span
></
li
>
{/dede:arclist}
|
要获取附加表内容,必须符合两个条件
1、指定 channelid 属性(内容模型的id值)
2、指定要获得的字段 addfields='字段1,字段'
在文章内容页面,可以直接使用{dede:field.price/}来获得价格的值。
☞ 拓展:织梦dedecms更新列表页提示Fatal error: Call to a member function GetInnerText() on a non-object in...
这个错误提示会在更新自定义模型栏目列表的时候出现,解决办法如下所示:
打开 /inculde/taglib/channel/img.lib.php文件 找到第51行代码,如图
1
2
|
将$innerTmp = $arcTag->GetInnerText();替换为
$innerTmp = ($arcTag=="") ? trim($arcTag) : trim($arcTag->GetInnerText());
|
保存即可。