[织梦CMS] 织梦自定义表单联动之城市表单名称只显示数字或枚举值的解决方法

[复制链接]
查看: 4198|回复: 0
发表于 2019-8-8 18:27:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我们在做完织梦自定义表单做城市二级三级联动后,前台页面显示没有问题,不过在后台获得的数据联动类型只显示枚举值,在网上找了很多方法都不行,其实都是只说了一半,没有说全,下面我就对这些方法汇总再给大家讲一下。
织梦自定义表单联动之城市表单名称只显示数字或枚举值的解决方法:
1、找到dede/templets/diy_list.htm文件中(大约在41行):
    1. else if($fielddata[1]=='addon')
    2. {
    3.     $fields[$field] = "<a href='{$fields[$field]}' target='_blank'><img src='images/channeladd.gif' border='0' /> 其它附件</a>";
    4. }
    复制代码

在下面加入:
    1. //联动类型显示修正开始

    2.             else if($fielddata[1]=='stepselect')
    3.             {
    4.                 $db->Execute('me',"SELECT * FROM `dede_stepselect` WHERE egroup='{$field}'");
    5.                 while($arr = $db->GetArray(me))
    6.                 {
    7.                     $egroup = $arr['egroup'];
    8.                 }
    9.                 $fields[$field] = Getenums("{$fields[$field]}",$egroup);
    10.             }
    11. <span style="background-color: rgb(255, 255, 255);">//联动类型显示修正结束</span>
    复制代码



在本文件中继续找到: {/dede:datalist}
在下面加入一下代码:
    1. <?php
    2. function Getenums($evalue = 0, $egroup)
    3. {
    4.     if (!isset($GLOBALS['em_' . $egroup . 's'])) {
    5.         $cachefile = DEDEDATA . '/enums/' . $egroup . '.php';
    6.         if (!file_exists($cachefile)) {
    7.             require_once DEDEINC . '/enums.func.php';
    8.             WriteEnumsCache();
    9.         }
    10.         if (!file_exists($cachefile)) {
    11.             return '';
    12.         } else {
    13.             require_once $cachefile;
    14.         }
    15.     }
    16.     if ($evalue >= 500) {
    17.         if ($evalue % 500 == 0) {
    18.             return isset($GLOBALS['em_' . $egroup . 's'][$evalue]) ? $GLOBALS['em_' . $egroup . 's'][$evalue] : '';
    19.         } else {
    20.             if (preg_match('#([0-9]{1,})\\.([0-9]{1,})#', $evalue, $matchs)) {

    21. $esonvalue = $matchs[1];
    22. $etopvalue = $esonvalue - $esonvalue % 500;
    23. $esecvalue = preg_replace('/(?<=\.)[0]+/', '', $evalue);

    24. $GLOBALS['em_' . $egroup . 's'][$etopvalue] = empty($GLOBALS['em_' . $egroup . 's'][$etopvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$etopvalue];

    25. $GLOBALS['em_' . $egroup . 's'][$esonvalue] = empty($GLOBALS['em_' . $egroup . 's'][$esonvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$esonvalue];

    26. $GLOBALS['em_' . $egroup . 's'][$esecvalue] = empty($GLOBALS['em_' . $egroup . 's'][$esecvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$esecvalue];

    27. return $GLOBALS['em_' . $egroup . 's'][$etopvalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$esonvalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$esecvalue];
    28.             }
    29.             else
    30.             {
    31. $elimit = $evalue % 500;
    32. $erevalue = $evalue - $elimit;
    33. $GLOBALS['em_' . $egroup . 's'][$erevalue] = empty($GLOBALS['em_' . $egroup . 's'][$erevalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$erevalue];
    34. $GLOBALS['em_' . $egroup . 's'][$evalue] = empty($GLOBALS['em_' . $egroup . 's'][$evalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$evalue];
    35. return $GLOBALS['em_' . $egroup . 's'][$erevalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$evalue];
    36.             }
    37.         }
    38.     }
    39. }
    40. ?>
    复制代码


按照上面的方法修改完成后即可显示!


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 
 
工作时间:
8:00-18:00
客服热线:
15368564009
客服微信