帝国论坛帝国网站管理系统交流区模板/标签/插件共享交流[分享]帝国cms内容页调用多值字段,以及列表内容模板(list.var)中如何调用多值字段的教程 【本版专题贴子】  
主题:[分享]帝国cms内容页调用多值字段,以及列表内容模板(list.var)中如何调用多值字段的教程 [加入收藏夹]   

nydalu
用户头衔:进士

精华贴   :0
发贴数   :870
经验值   :4194
注册时间:2008-07-08
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[分享]帝国cms内容页调用多值字段,以及列表内容模板(list.var)中如何调用多值字段的教程
多值字段是帝国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
}
?>
多值字段

转自别处的帝国爱好者,发在这里做为备份

[该贴被修改 1 次,最后修改时间 2024-12-06 08:09:23 ]


我爱帝国 感谢王猛
2024-12-06 08:07:33 已设置保密 顶部 回复 引用 报告 编辑 删除

shuangrong168
用户头衔:进士

精华贴   :1
发贴数   :1292
经验值   :4960
注册时间:2009-02-25
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]




[建站][仿站] [域名][空间] QQ:287785998
2024-12-06 10:57:01 已设置保密 顶部 回复 引用 报告 编辑 删除

worldcms
用户头衔:进士

精华贴   :0
发贴数   :938
经验值   :4194
注册时间:2017-05-12
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

支持




2024-12-09 10:08:21 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1