destoon中自定义字段的前台显示,及修改相关属性

简介: 在destoon中模块的自定义字段存储在destonn_fields这个表中 自定义字段的前台显示使用的是fields_html这个函数在fields.func.php文件中,这个函数的定义如下, function fields_html($left = '<td class="tl">', $right = '<td>', $values = array()

在destoon中模块的自定义字段存储在destonn_fields这个表中

自定义字段的前台显示使用的是fields_html这个函数在fields.func.php文件中,这个函数的定义如下,

function fields_html($left = '<td class="tl">', $right = '<td>', $values = array(), $fd = array()) {
	extract($GLOBALS, EXTR_SKIP);
	if($fd) $FD = $fd;
	$html = '';
	foreach($FD as $k=>$v) {
		if(!$v['display']) continue;
		if(!defined('DT_ADMIN') && !$v['front']) continue;
		$html .= fields_show($k, $left, $right, $values, $fd);
	}
	return $html;
}


这个函数不是使用$left与right这两个变量中包含的html包住我们自定义的字段,这样就显示非常的不和谐,很不好自定义界面,


这个函数中使用的了一个$FD的变量,这个变量是一个全局变量,在用户中心显示编辑界面时,变量的初始公是在my.inc.php中

if (in_array($action, array('add', 'edit')))
{
    $FD = cache_read('fields-' . substr($table, strlen($DT_PRE)) . '.php');
    if ($FD) require DT_ROOT . '/include/fields.func.php';
    isset($post_fields) or $post_fields = array();
    $CP = $MOD['cat_property'];
    if ($CP) require DT_ROOT . '/include/property.func.php';
    isset($post_ppt) or $post_ppt = array();
}


$FD是从缓存中读取的,其中的形式如下,

<?php defined('IN_DESTOON') or exit('Access Denied');
return array(
    19 => array('itemid' => '19', 'tb' => 'dingzhi_40', 'name' => 'qidian', 'title' => '起点', 'note' => '', 'type' => 'int', 'length' => '10', 'html' => 'area', 'default_value' => '', 'option_value' => '', 'width' => '120', 'height' => '90', 'input_limit' => '', 'addition' => '', 'display' => '1', 'front' => '1', 'listorder' => '0',),
    20 => array('itemid' => '20', 'tb' => 'dingzhi_40', 'name' => 'zhongdian', 'title' => '终点', 'note' => '', 'type' => 'int', 'length' => '10', 'html' => 'area', 'default_value' => '', 'option_value' => '', 'width' => '120', 'height' => '90', 'input_limit' => '', 'addition' => '', 'display' => '1', 'front' => '1', 'listorder' => '0',),
    21 => array('itemid' => '21', 'tb' => 'dingzhi_40', 'name' => 'shuojihao', 'title' => '手机号', 'note' => '', 'type' => 'varchar', 'length' => '15', 'html' => 'text', 'default_value' => '', 'option_value' => '', 'width' => '120', 'height' => '90', 'input_limit' => '', 'addition' => 'size="30"', 'display' => '1', 'front' => '1', 'listorder' => '0',),
    22 => array('itemid' => '22', 'tb' => 'dingzhi_40', 'name' => 'shixiao', 'title' => '时效', 'note' => '', 'type' => 'varchar', 'length' => '255', 'html' => 'radio', 'default_value' => '', 'option_value' => '1|1天内*2|2天内*3|3天内*4|4天内*5|5天内*6|6天内*7|7天内*', 'width' => '120', 'height' => '90', 'input_limit' => '', 'addition' => '', 'display' => '1', 'front' => '1', 'listorder' => '0',),);
?>


如果我们需要对字段的显示名称进行更改,那么就需要传入整个array才能达到目的,个人觉得有点麻烦了


个人觉得如果要修改某个字段的相关特性时,只需要传入特定属性就可以了,因此我对函数做了一点改变,因为我只需要改变title就可以,所以没有对这个函数做太大的改动

  {php $mycust=array("qidian"=>"发车起点:");}
   {if $FD}{fields_html3('<li><p>--name--:</p><span>--control--</span></li>',$item, $mycust)}{/if}


function fields_html3($template, $values = array(), $mycust = array()) {
    extract($GLOBALS, EXTR_SKIP);


  //  if($fd) $FD = $fd;这里的本意是用我们自定义的字段来替换从缓存中读取的字段,但是这样的就有点麻烦,
  //  print_r($FD);


    $html = '';
    foreach ($FD as $k => &$v)
    {

        if (!$v['display']) continue;
        if (!defined('DT_ADMIN') && !$v['front']) continue;
        $v["temphtml"] = fields_show2($k, $values );


        $title = $v["title"];
        if(isset($mycust[$v["name"]])) $title = $mycust[$v['name']];

        $temp = str_replace("--name--", $title,$template);
        $temp  = str_replace("--control--", $v["temphtml"],$temp);

        $html.=$temp."\r\n";
    }

    return $html;
}


相关文章
|
3月前
|
Java
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
该博客文章讲解了JSP中`<jsp:getProperty>`和`<jsp:setProperty>`动作的使用方法,包括它们的语法格式和如何在页面中使用这些动作来获取和设置JavaBean对象的属性值,并通过图书信息的填写和展示示例进行了演示。
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
PbootCMS自定义前台404错误页面
PbootCMS自定义前台404错误页面
772 0
PbootCMS自定义前台404错误页面
|
前端开发 JavaScript Java
关于select框下设置了disabled导致前台有值,但后台接收不到的情况记录
在项目(传统JSP)需要改版页面的时候,进入页面前先获取后台传过来的数据,但一部分数据需要设置不可编辑,select框是不支持readonly的,故将select加disabled,此时则引起了一些问题,后台取不到加了disabled属性的值。
464 0
关于select框下设置了disabled导致前台有值,但后台接收不到的情况记录
|
小程序 开发者
小程序__02--navigationBarTitleText配置子页面标题,依旧显示默认标题,子页面配置不显示
navigationBarTitleText配置子页面标题,依旧显示默认标题,子页面配置不显示
Flutter页面参数的传递(获取&返回),比如修改昵称头像,并在上一级页面返回显示
Flutter页面参数的传递(获取&返回),比如修改昵称头像,并在上一级页面返回显示
396 0
基类、接口的应用——表单控件:一次添加、修改一条记录,一次修改多条记录。(上)
好久没发帖子了,又加了不少的功能呀。(图片仅是测试,不代表什么表情。) 本来我也想写一个2007的总结的,但是看到很多人都写了,我就不凑热闹了,写点和代码有关系的吧。 写作原因: 1、在项目里做得最多的操作恐怕就是保存数据了,总是要写一大堆的代码,能不能简单一点呢?2005来了,似乎可以减少一些代码,但是03里怎么办呢? 2、基类、接口、策略模式,好多高手都讨论过了,但是都是理论上的,在实践中如何应用呢?在webform 里面又怎么使用呢? 目的: 1、做一个“控件”来应对各种表单的录入,包括一次保存一条记录、一次保存多条记录。
1018 0
|
SQL PHP
DEDE在列表调用当前栏目的文章总数的修改方法
此方法适合织梦dedecmsv5.6及以上版本,其它版本暂未测试,修改方法如下: dede - 598080707.net 打开 include/common.func.php文件,在这个php文件里的?>之前,加上以下代码: function GetTotalArc($t...
836 0
|
Web App开发 Java 数据安全/隐私保护