admin 发表于 2014-3-31 19:24:14

帝国CMS多值字段morevaluefield解密


基本概述:
帝国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::::::


内容页调用:
<?php
/*
内容页调用多值字段示例,假设字段这个多值字段为duozhi
$exp2 $exp2 以此类推分别是每行的第一个值 第二个值 第三个值
*/

// 方法1
if ($navinfor['duozhi']) {
    $arr = explode('||||||', $navinfor['duozhi']);
    $count = count($arr);
    $duozhiStr = '';
    for ($i = 0;$i < $count;$i++) {
      $exp = explode('::::::', $arr[$i]);
      $duozhiStr.= '<li>' . $exp . ' ' . $exp . '</li>';
    }
}

// 方法2
if ($navinfor['duozhi']) {
    $arr = explode('||||||', $navinfor['duozhi']);
    foreach ($arr as $k => $v) {
      $exp = explode('::::::', $v);
      $duozhiStr.= '<li>' . $exp . ' ' . $exp . '</li>';
    }
}
?>
调用:
<?=$duozhiStr?>
页: [1]
查看完整版本: 帝国CMS多值字段morevaluefield解密