phpcms v9,我们在做类似于酒店房型等类型的时候,需要用到文本组字段模型,但phpcms并未提供该模型。如下图所示效果:

展示效果如下:

步骤/方法

  1. 打开phpcms\modules\content\fields目录,复制文件夹downfiles,并改名为textgroups。

  2. 打开phpcms\modules\content\fields\fields.inc.php文件,增加字段类型:

    'textgroups'=>'多文件上传',

  3. 打开phpcms\modules\content\fields\textgroups目录(第一步复制的文件夹),修改以下文件:

  4. form.inc.php

    function textgroups($field, $value, $fieldinfo) {
    extract(string2array($fieldinfo['setting']));
    $list_str = '';
    if($value) {
    $value = string2array(html_entity_decode($value,ent_quotes));
    if(is_array($value)) {
    foreach($value as $_k=>$_v) {
    $list_str .= "<div id='textsgroups{$_k}'> <input type='text' name='{$field}_fx[]' value='{$_v[fx]}' style='width:100px;' class='input-text'> <input type='text' name='{$field}_fj[]' value='{$_v[fj]}' style='width:100px;' class='input-text'> <input type='text' name='{$field}_cx[]' value='{$_v[cx]}' style='width:100px;' class='input-text'> <input type='text' name='{$field}_kd[]' value='{$_v[kd]}' style='width:100px;' class='input-text'> <input type='text' name='{$field}_vip[]' value='{$_v[vip]}' style='width:100px;' class='input-text'> <a href=\"javascript:remove_div('textsgroups{$_k}')\">".l('remove_out')."</a></div>";
    }
    }
    }

    $string ='<script type=text/javascript>
    function add_textsfile(returnid) {
    var ids = parseint(math.random() * 10000); 
    var str = "<li id=\'textsgroups"+ids+"\'> <input type=\'text\' name=\'"+returnid+"_fx[]\' value=\'\' style=\'width:100px;\' class=\'input-text\'> <input type=\'text\' name=\'"+returnid+"_fj[]\' value=\'\' style=\'width:100px;\' class=\'input-text\'> <input type=\'text\' name=\'"+returnid+"_cx[]\' value=\'\' style=\'width:100px;\' class=\'input-text\'> <input type=\'text\' name=\'"+returnid+"_kd[]\' value=\'\' style=\'width:100px;\' class=\'input-text\'> <input type=\'text\' name=\'"+returnid+"_vip[]\' value=\'\' style=\'width:100px;\' class=\'input-text\'> <a href=\"javascript:remove_div(\'textsgroups"+ids+"\')\">remove</a> </li>";
    $(\'#\'+returnid).append(str);
    }</script>';
    $string .= '<input name="info['.$field.']" type="hidden" value="1">
    <fieldset class="blue pad-10">
    <legend>'.l('mm_fxlist').'</legend><div id="tt">
    <input type="text" value="'.l('mm_fx').'" readonly style="width:100px;border:0;" class="input-text">
    <input type="text" value="'.l('mm_fj').'" readonly style="width:100px;border:0;" class="input-text">
    <input type="text" value="'.l('mm_cx').'" readonly style="width:100px;border:0;" class="input-text">
    <input type="text" value="'.l('mm_kd').'" readonly style="width:100px;border:0;" class="input-text">
    <input type="text" value="'.l('mm_lyj').'" readonly style="width:100px;border:0;" class="input-text">
    </div>';
    $string .= $list_str;
    $string .= '<ul id="'.$field.'" class="piclist"></ul>
    </fieldset>
    <div class="bk10"></div>
    ';
    $string .= $str."<input type=\"button\" class=\"button\" value=\"".l('mm_addfx')."\" onclick=\"add_textsfile('{$field}')\">";
    return $string;
    }

  5. 修改input.inc.php

    function textgroups($field, $value) {
    $hotel = $_post[$field.'_fx'];
    $hotel_fj = $_post[$field.'_fj'];
    $hotel_cx = $_post[$field.'_cx'];
    $hotel_kd = $_post[$field.'_kd'];
    $hotel_vip = $_post[$field.'_vip'];
    $array = $temp = array();
    if(!empty($hotel)) {
    foreach($hotel as $key=>$hote) {
    $temp['fx'] = $hote;
    $temp['fj'] = $hotel_fj[$key];
    $temp['cx'] = $hotel_cx[$key];
    $temp['kd'] = $hotel_kd[$key];
    $temp['vip'] = $hotel_vip[$key];
    $array[$key] = $temp;
    }
    }
    $array = array2string($array);
    return $array;
    }

  6. 修改的output.inc.php

    function textgroups($field, $value) {

    return string2array($value);

    }

  7. 更新后台缓存。在模型中新建字段,可以看到文本组,创建后就可以添加。

  8. 前台调用:<table>
    <tr><th>房型</th><th>房价</th><th>床型</th><th>路游价</th></tr>
    {loop $fxinfo $v} <!--$fxinfo为字段名称-->
    <tr><td>{$v[fx]}</td><td>¥{$v[fj]}元</td><td>{$v[cx]}</td><td><strong style="color:#f60;font-size:18px;font-family:tahoma,helvetica,arial,sans-serif;">¥{$v[vip]}</strong>元</td></tr>
    {/loop}
    </table>

注意事项

  • 注意修改几个文件中的函数名称,这个很容易忽略。

  • 注意文件内容中引号的闭合和js代码。

PHPCMS V9二次开发]自定义字段模型-文本组的更多相关文章

  1. [PHPCMS V9二次开发]自定义字段模型-添加字段类型

    步骤/方法 打开phpcms\modules\content\fields目录,复制文件夹downfiles,并改名为textgroups. 打开phpcms\modules\content\fiel ...

  2. phpcms v9二次开发之模型类的应用(1)

    在<phpcms二次开发之模型类model.class.php>中讲到了模型类的建立方法,接下来我讲一下模型类的应用.      前段时间我基于phpcms v9开发了一个足球网.足球网是 ...

  3. phpcms v9二次开发之模型类的应用(2)

    二.模型操作方法select()--查询语句         //查询级别管理列表信息    public function levellists() { $lelists = $this->l ...

  4. PHPCMS V9二次开发便捷自定义后台入口文件夹

    phpcms v9二次开发便捷自定义后台入口文件夹 最新发布的phpcms v9由于采用了mvc的设计模式,所以它的后台访问地址是固定的,虽然可以通过修改路由配置文件来实现修改,但每次都修改路由配置文 ...

  5. phpcms v9二次开发之数据模型类

    系统模型类:model.class.php数据模型类的位置:/phpcms/libs/classes phpcms v9二次开发中,我们要经常需要对模块的数据表进行查询.添加.修改和删除数据等操作,所 ...

  6. PHPCMS V9 二次开发常用代码集

    0:调用最新文章,带所在版块 {pc:get sql="SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url a ...

  7. phpcms v9二次开发笔记

    phpcms是基于MVC结构的. 安装: 下载phpcms_v9.5.9_UTF8.zip:新建目录phpcms,将压缩包里install_package目录下所有文件复制到phpcms目录.浏览器输 ...

  8. V9 二次开发技术篇之 模型数据库

    应V9粉丝的建议,本人今天讲一下 MVC中的M 数据库模型 首先 在 phpcms\model  建一个模型文件test_model.class.php <?phpdefined('IN_PHP ...

  9. phpcms V9 二次开发------(获取点击数详解)

    关于phpcms V9的点击数的使用应该有不少数是直接调用网上搜索到的代码,但是对于一些想要深入研究开发的人来说,看到网上的代码后更是不解,本人这几天看了看,了解了一些东西,在这里写出来分享一下,首先 ...

随机推荐

  1. C#可以直接调用的Win32API(和VCL做的整理工作非常类似)

    以前整理的Win32 API,可以直接在C#中直接调用,在做WinForm时还是很有帮助的.以前用在一个多窗口界面中,当轮询窗口时,调用API会提高很多效率. 源码下载 http://files.cn ...

  2. 多线程同步循环打印和Guarded suspension 模式

     * 迅雷笔试题: * 有三个线程ID分别是A.B.C,请有多线编程实现,在屏幕上循环打印10次ABCABC…  由于线程执行的不确定性,要保证这样有序的输出,必须控制好多线程的同步. 线程同步有两种 ...

  3. 【4】JAVA---地址App小软件(UpdatePanel.class)(表现层)

    修改地址信息的一个表现层类. 必须选中地址,才能修改,否则会弹出窗口提示, 修改地址界面: /* * UpdatePanel.java * */ package cn.hncu.addr.ui; im ...

  4. UIAlertController 的使用——NS_CLASS_AVAILABLE_IOS(8_0)

    UIAlertView 随着苹果上次iOS 5的发布,对话框视图样式出现在了我们面前,直到现在它都没有发生过很大的变化.下面的代码片段展示了如何初始化和显示一个带有“取消”和“好的”按钮的对话框视图. ...

  5. MVC4 Razor视图下使用iframe加载RDLC报表

    MVC视图下默认是不支持服务器端控件的,所以,为了能够通过report viewer控件加载报表,需要在MVC视图添加嵌入的页面. 起初在stackoverflow上找到一个解决方案,见这里.不过这里 ...

  6. Office2007图标变成白框,但是还能使用问题解决办法

    在Windows 8中,Office图标变成白框了.不能显示. 解决办法:从其他电脑的Windows\Installer中拷贝一下所有文件夹到问题电脑.然后重启,问题解决. {90120000-002 ...

  7. linux —— 初探

    目录: linux 知识拓展 ubuntu 的安装 安装完成后做的那些事 1.linux 知识拓展 开源世界旅行手册:一个中文网站,根据<Ubuntu教程>而撰写的有趣的文档.作者说:“只 ...

  8. JDK动态代理实现原理--转载

    之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白.比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了.  ...

  9. jboss学习 - vfs---转载

    jboss的VFS是为了解决什么问题,他为什么有用呢 在jboss中有很多类似的资源操作的代码都分散在程序的各个地方,大多数情况下代码首先确定操作的资源的类型,比如是文件或者是文件夹,通过URL加载的 ...

  10. Java基础知识强化之IO流笔记02:try...catch的方式处理异常

    1. 案例示例: package com.himi.trycatch; public class ExceptionDemo { public static void main(String[] ar ...