你有没有发现,刚上手EyouCMS做模板的小伙伴,80%都卡在自定义字段上?要么后台辛辛苦苦加了内容,前台死活调不出来;要么调出来的格式乱七八糟,连自己都看不过眼。这事儿吧,真不是你笨,是没人给你掰扯清楚底层逻辑和常用调用姿势。今天老鸟我掏心窝子整理一套,看完保准你再也不挠头。
先回忆下,EyouCMS的自定义字段,就像你给家里衣柜额外装的收纳盒——默认层板不够放换季鞋、帽子围巾这些细碎玩意儿,加个抽屉、挂篮,按需设计格子大小,找东西方便不说,整个衣柜都规整多了。后台的“内容模型→自定义字段”就是安装收纳盒的地方,前台调用标签就是伸手拿东西的手势,手势错了,要么摸空要么翻得一团糟。
讲调用姿势前,先补个最最关键的前置知识:你得先知道自己加的字段属于「内容模型」还是「单页模型」,这俩调用方式完全不一样,别搞混了白折腾。
内容模型自定义字段调用
内容模型一般是指文章、产品、图集这些有列表页、详情页的模块,调用分两种情况,列表页和详情页。
详情页最简单,就像你坐在自己专属书桌前,抽屉直接拉到底就能拿到所有收纳盒里的东西。标签格式是固定的,用```{$field.字段名}```就行。比如你加了个产品的「库存余量」字段,字段名设成kcyl,详情页直接写这段代码,保存刷新,后台填的数字就直接出来了。要是你加的是富文本字段,想展示图片、文字排版,记得别漏了后面的过滤参数?哦不对,EyouCMS默认富文本是可以直接展示的,要是你怕有脏代码,加个```{$field.字段名|htmlspecialchars_decode}```就行,这个是转义HTML标签的,新手也能用,简单。
列表页就麻烦一丢丢,因为列表页是一堆内容卡片,相当于你在衣柜门口扫一眼,只能看到每一层收纳盒的标签,不能直接拉抽屉。这时候得用带循环的标签,比如文章列表用的```{eyou:list}```,产品列表用的```{eyou:productlist}```,循环标签里面再套字段标签,格式还是```{$field.字段名}```。举个例子,你给文章加了个「文章封面小图标」的单图字段,字段名是fbtx,那代码可以这么写:
```
{eyou:list pagesize='10'}
{$field.title}
{$field.description}
{/eyou:list}
```
要是你加的是单选框、复选框、下拉框这种选项型字段,列表页和详情页的调用都一样吗?不对,复选框不一样!普通单选、下拉,直接用```{$field.字段名}```能调出选项值,要是你想调出选项的文字标签?哦对哦,很多人都忽略这个,比如字段名是xinxi,选项是“1=最新”“2=热门”,后台填的是“1”,直接调会显示“1”,想显示“最新”的话,得用```{$field.xinxi|get_field_info='xinxi','value','text'}```,这个get_field_info是EyouCMS自带的字段转换函数,三个参数分别是字段名、后台存的值类型、前台要显示的类型,记住顺序别乱,新手一般不会错。复选框更特殊,后台存的是逗号分隔的选项值,比如“1,2”,想显示“最新,热门”的话,得用函数数组遍历,代码稍微复杂点,老鸟给你写个现成的,直接复制粘贴改字段名就行:
```
{eyou:volist name='$field.字段名|strval=|explode=',',' id='vo'}
{$vo|get_field_info='字段名','value','text'}{if !$i@last},{/if}
{/eyou:volist}
```
这里解释下,strval是把字段值转成字符串,防止空值报错,explode是把逗号分隔的字符串拆成数组,volist遍历数组,$i@last是判断是不是最后一个选项,最后一个不加逗号,完美。
单页模型自定义字段调用
单页模型就是关于我们、联系我们这种只有一个页面的模块,相当于你给玄关装的固定鞋柜,里面的东西只有你自己知道怎么放,没有其他柜门干扰。调用也超级简单,不分什么循环,直接用```{$eyou.field.字段名}```就行。比如你给联系我们加了个「公司地址」的文本字段,字段名是gsdz,单页模板直接写这段代码,保存刷新就能显示。要是你加的是多图字段,比如公司相册,那就得用```{eyou:volist name='$eyou.field.字段名' id='vo'}```来遍历了,代码示例:
```
{eyou:volist name='$eyou.field.gsxq' id='vo'}

{/eyou:volist}
```
这里的image_url和title是多图字段自带的两个属性,image_url是图片地址,title是图片标题,别写错了。
说个新手最容易踩的坑吧,后台添加字段的时候,字段名只能用小写字母、数字和下划线,不能用中文、大写字母或者其他特殊字符,不然前台肯定调不出来。还有,添加完字段记得去「内容管理」里对应的模型发布一条内容测试,别模板改了半天,后台根本没填数据,白忙活。