多值字段是帝国CMS7.0开始新增的字段。像下载地址、在线地址、图片集等这样的将多个内容存放到一个字段的功能,增加字段时选择多值表单元素即可,功能更强大,扩展更灵活。
支持设定无限列与无限行数据录入,并且支持设置必填的列,以及默认行数。
一、结构分析 帝国CMS数据结构的用户都知道以前的morepic downpath onlinepath 字段储存是如下:
单行以换行符分割,单项以六个冒号分隔
a::::::b::::::c::::::d::::::"\r\n" a2::::::b2::::::c2::::::d2::::::"\r\n" 帝国CMS7.0的多值字段储存则是这样的:单行以六个竖线分割,单项以六个六个冒号分割。
a::::::b::::::c::::::d::::::||||||a2::::::b2::::::c2::::::d2:::::: 二、帝国cms如何在内容页中调用多值字段? 示例代码如下:
<?php /* 内容页调用多值字段示例 假设字段这个多值字段为tl **/ $exp=explode('||||||',$navinfor[tl]); foreach($exp as $k=>$v) { /*下一行是分割多值字段的每行中的每项*/ $exp2=explode('::::::',$v); /* $exp2[0] $exp2[1] 以此类推分别是每行的第一个值 第二个值 第三个值 */ echo '<li>'.$exp2[0].' '.$exp2[1].'</li>'; } ?> 三、帝国cms如何在列表内容模板(list.var)中调用多值字段? 在列表内容模板调用多值字段,需要将列表模板内的“ 使用程序代码”勾选。然后在列表内容模板(list.var)中填入如下示例代码:
$morefr=explode('||||||',$r[aaaaa]); $mfcount=count($morefr); for($mfi=0;$mfi<$mfcount;$mfi++) { $morefrf=explode('::::::',$morefr[$mfi]); $aaaaa.=" <li><span class=\"text-success\"></span> ".$morefrf[0]."</li> "; }
$listtemp=' <h3>[!--title--]</h3> <ul class="list"> '.$aaaaa.' </ul> '; 在实际应用中,遇到了需要同时调用出多值字段中的所有数据以及最新一条数据的情况,这里经过琢磨,现分享代码如下。
四、帝国cms在列表内容模板(list.var)中同时调用多值字段中所有数据和最新一条数据 示例代码如下:
$morefr=explode('||||||',$r[genjin]); $mfcount=count($morefr); for($mfi=0;$mfi<$mfcount;$mfi++) { $morefrf=explode('::::::',$morefr[$mfi]); $advantage.=" <li>".$morefrf[0]."".$morefrf[1]."</li> "; } $morefr=explode('||||||',$r[genjin]); $mfcount=count($morefr); { $morefrf=explode('::::::',$morefr[count($morefr)-1]); } $listtemp=' <!-- 这里只显示多值字段最后一条数据 --> '.$morefrf[0].''.$morefrf[1].' <ul> <!-- 这里显示多值字段所有数据 --> '.$advantage.' </ul> '; 五、PHP for循环调用多值字段调用方法/基础调用、自定义多组调用及倒序输出/
【基础版本】
<?php $morefr=explode('||||||',$navinfor[字段名称]); $mfcount=count($morefr); for($mfi=0;$mfi<$mfcount;$mfi++) { $morefrf=explode('::::::',$morefr[$mfi]); ?> <li><b><?=$morefrf[0]?></b><i><?=$morefrf[1]?></i><u><?=$morefrf[2]?></u></li> <?php } ?>
【自定义版本/适用于同页面多个地方不同组合的调用】
<?php $morefr=explode('||||||',$navinfor[字段名称]); $mfcount=count($morefr); for($mfi=0;$mfi<$mfcount;$mfi++) { $morefrf=explode('::::::',$morefr[$mfi]); $自定义名称1.=' '.$morefrf[0].' '.$morefrf[1].' '.$morefrf[2].' '; $自定义名称2.=' '.$morefrf[2].' '.$morefrf[3].' '.$morefrf[4].' '; ?>
调用: <?=$自定义名称1?> <?=$自定义名称2?>
【倒序版本】
<?php $morefr=explode('||||||',$navinfor[字段名称]); rsort($morefr); // 添加此行即可倒序 $mfcount=count($morefr); for($mfi=0;$mfi<$mfcount;$mfi++) { $morefrf=explode('::::::',$morefr[$mfi]); ?> <li><b><?=$morefrf[0]?></b><i><?=$morefrf[1]?></i><u><?=$morefrf[2]?></u></li> <?php } ?> 多值字段
转自别处的帝国爱好者,发在这里做为备份
|