找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2342|回复: 0

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

[复制链接]
发表于 2018-8-3 20:04:17 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
我们在做完织梦自定义表单做城市二级3J联动后,前台页面显示没有问题,不过在后台获得的数据联动类型只显示枚举值,
000000D51-0.webp
在网上找了很多方法都不行,其实都是只说了一半,没有说全,下面我就对这些方法汇总再给大家讲一下。
织梦自定义表单联动之城市表单名称只显示数字或枚举值的解决方法:

1、找到dede/templets/ddiy_list.htm文件中(大约在41行):
  1. else if($fielddata[1]=='addon')
  2. {
  3. &#160;&#160;&#160;&#160;$fields[$field] =&#160;"<a href='{$fields[$field]}' target='_blank'><img src='images/channeladd.gif' border='0' /> 其它附件</a>";
  4. }
复制代码

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

  2. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else&#160;if($fielddata[1]=='stepselect')
  3. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
  4. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$db->Execute('me',"SELECT * FROM `dede_stepselect` WHERE egroup='{$field}'");
  5. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while($arr = $db->GetArray(me))
  6. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
  7. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$egroup = $arr['egroup'];
  8. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  9. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$fields[$field] = Getenums("{$fields[$field]}",$egroup);
  10. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}

  11. //联动类型显示修正结束
复制代码


在本文件中继续找到: {/dede:datalist}
在下面加入一下代码:
  1. 01
  2. <?php
  3. 02
  4. function Getenums($evalue = 0, $egroup)
  5. 03
  6. {
  7. 04
  8.     if (!isset($GLOBALS['em_' . $egroup . 's'])) {
  9. 05
  10.         $cachefile = DEDEDATA . '/enums/' . $egroup . '.php';
  11. 06
  12.         if (!file_exists($cachefile)) {
  13. 07
  14.             require_once DEDEINC . '/enums.func.php';
  15. 08
  16.             WriteEnumsCache();
  17. 09
  18.         }
  19. 10
  20.         if (!file_exists($cachefile)) {
  21. 11
  22.             return '';
  23. 12
  24.         } else {
  25. 13
  26.             require_once $cachefile;
  27. 14
  28.         }
  29. 15
  30.     }
  31. 16
  32.     if ($evalue >= 500) {
  33. 17
  34.         if ($evalue % 500 == 0) {
  35. 18
  36.             return isset($GLOBALS['em_' . $egroup . 's'][$evalue]) ? $GLOBALS['em_' . $egroup . 's'][$evalue] : '';
  37. 19
  38.         } else {
  39. 20
  40.             if (preg_match('#([0-9]{1,})\\.([0-9]{1,})#', $evalue, $matchs)) {
  41. 21

  42. 22
  43. $esonvalue = $matchs[1];
  44. 23
  45. $etopvalue = $esonvalue - $esonvalue % 500;
  46. 24
  47. $esecvalue = preg_replace('/(?<=\.)[0]+/', '', $evalue);
  48. 25

  49. 26
  50. $GLOBALS['em_' . $egroup . 's'][$etopvalue] = empty($GLOBALS['em_' . $egroup . 's'][$etopvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$etopvalue];
  51. 27

  52. 28
  53. $GLOBALS['em_' . $egroup . 's'][$esonvalue] = empty($GLOBALS['em_' . $egroup . 's'][$esonvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$esonvalue];
  54. 29

  55. 30
  56. $GLOBALS['em_' . $egroup . 's'][$esecvalue] = empty($GLOBALS['em_' . $egroup . 's'][$esecvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$esecvalue];
  57. 31

  58. 32
  59. return $GLOBALS['em_' . $egroup . 's'][$etopvalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$esonvalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$esecvalue];
  60. 33
  61.             }
  62. 34
  63.             else
  64. 35
  65.             {
  66. 36
  67. $elimit = $evalue % 500;
  68. 37
  69. $erevalue = $evalue - $elimit;
  70. 38
  71. $GLOBALS['em_' . $egroup . 's'][$erevalue] = empty($GLOBALS['em_' . $egroup . 's'][$erevalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$erevalue];
  72. 39
  73. $GLOBALS['em_' . $egroup . 's'][$evalue] = empty($GLOBALS['em_' . $egroup . 's'][$evalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$evalue];
  74. 40
  75. return $GLOBALS['em_' . $egroup . 's'][$erevalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$evalue];
  76. 41
  77.             }
  78. 42
  79.         }
  80. 43
  81.     }
  82. 44
  83. }
  84. 45
  85. ?>
复制代码


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

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

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

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-25 09:02 , Processed in 0.042496 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表