如何在织梦自定义表单中添加城市二级三级联动

我们在用织梦系统制作自定义表单时,有时需要使用到联动类型,比如说城市二级三级联动,这就需要对织梦自定义表单进行二次开发。今天笔者就跟大家分享一下如何在织梦自定义表单添加城市二级三级联动。

第一:在织梦自定义表单中添加联动类型

   织梦自定义表单中默认情况下是没有联动类型这个选项,要想实现城市联动功能就必须要有联动类型,下面教你怎么调用出联动类型,原因就是织梦官方默认把联动类型在自定义表单中注释掉了,我们让他显示就可以。我们需要修改两个文件,下面是方法。

1、打开修改的文件:dede/templets/diy_field_add.htm 大概146 行,很明显已经注释掉,我们把注释去掉,

修改后如下图。改好后,保存即可!

2、修改的文件:dede/templets/diy_field_edit.htm 大概在127行,很明显已经注释掉,我们把注释去掉,然后放到“多选框”下面。

完成以上两步操作,在自定义表单中就有了联动类型选择了。

第二:在织梦自定义表单中做城市二级三级联动

自定义表单实现后如下图:

1、先看织梦的联动类别管理,如下图

点击地区后,向下拉,有3226条,全国各地包括港澳台都有的

另外我们也可以看到地区的组名,是nativeplace,后面我们要用到

2、点击自定义表单,新建一个字段,名字填好你想要的,比如说“户口所在地”,下面的字段名称要填写nativeplace,选择联动类型,而且下面的默认值也要填写nativeplace,如下图

 

3、点击确定,保存即可,然后就是前台的调用,这个就不多说了,相信会有织梦自定义表单的朋友都会吧。

第三:在织梦自定义表单做城市二级三级联动,后台类型名称显示数字解决方法

   我们在做完织梦自定义表单做城市二级三级联动后,前台页面显示没有问题,不过在后台获得的数据联动类型只显示枚举值,下面笔者就跟大家分享一下如何解决这一问题。

1、找到dede/templets/ddiy_list.htm文件中(大约在41行):

$fields[$field] = "<a href=’{$fields[$field]}’ target=’_blank’><img src=’p_w_picpath/channeladd.gif’ border=’0’ /> 其它附件</a>"; 

} 

在下面加入:

//联动类型显示修正开始 

else if($fielddata[1]==’stepselect’) 

{ 

$db->Execute(’me’,"SELECT * FROM `dede_stepselect` WHERE itemname=’{$fielddata[0]}’"); 

while($arr = $db->GetArray(me)) 

{ 

$egroup = $arr[’egroup’]; 

} 

$fields[$field] = Getenums("{$fields[$field]}",$egroup); 

} 

//联动类型显示修正结束 

2、找到dede/templets/ddiy_list.htm文件中{/dede:datalist}处

在下面加入一下代码:

<?php 

function Getenums($evalue=0,$egroup) 

{ 

if( !isset($GLOBALS[’em_’.$egroup.’s’]) ) 

{ 

$cachefile = DEDEDATA.’/enums/’.$egroup.’.php’; 

if(!file_exists($cachefile)) 

{ 

require_once(DEDEINC.’/enums.func.php’); 

WriteEnumsCache(); 

} 

if(!file_exists($cachefile)) 

{ 

return ’’; 

} 

else 

{ 

require_once($cachefile); 

} 

} 

if($evalue>=500) 

{ 

if($evalue % 500 == 0) 

{ 

return (isset($GLOBALS[’em_’.$egroup.’s’][$evalue]) ? $GLOBALS[’em_’.$egroup.’s’][$evalue] : ’’); 

} 

else if (preg_match("#([0-9]{1,}).([0-9]{1,})#", $evalue, $matchs)) 

{ 

$esonvalue = $matchs[1]; 

$etopvalue = $esonvalue - ($esonvalue % 500); 

$esecvalue = $evalue; 

$GLOBALS[’em_’.$egroup.’s’][$etopvalue] = empty($GLOBALS[’em_’.$egroup.’s’][$etopvalue])? ’’ 

: $GLOBALS[’em_’.$egroup.’s’][$etopvalue]; 

$GLOBALS[’em_’.$egroup.’s’][$esonvalue] = empty($GLOBALS[’em_’.$egroup.’s’][$esonvalue])? ’’ 

: $GLOBALS[’em_’.$egroup.’s’][$esonvalue]; 

$GLOBALS[’em_’.$egroup.’s’][$esecvalue] = empty($GLOBALS[’em_’.$egroup.’s’][$esecvalue])? ’’ 

: $GLOBALS[’em_’.$egroup.’s’][$esecvalue]; 

return $GLOBALS[’em_’.$egroup.’s’][$etopvalue].’ - ’.$GLOBALS[’em_’.$egroup.’s’][$esonvalue].’ - ’.$GLOBALS[’em_’.$egroup.’s’][$esecvalue]; 

} 

else 

{ 

$elimit = $evalue % 500; 

$erevalue = $evalue - $elimit; 

$GLOBALS[’em_’.$egroup.’s’][$erevalue] = empty($GLOBALS[’em_’.$egroup.’s’][$erevalue])? ’’ 

: $GLOBALS[’em_’.$egroup.’s’][$erevalue]; 

$GLOBALS[’em_’.$egroup.’s’][$evalue] = empty($GLOBALS[’em_’.$egroup.’s’][$evalue])? ’’ 

: $GLOBALS[’em_’.$egroup.’s’][$evalue]; 

return $GLOBALS[’em_’.$egroup.’s’][$erevalue].’ - ’.$GLOBALS[’em_’.$egroup.’s’][$evalue]; 

} 

} 

} 

?> 

 

到此,在织梦自定义表单中添加城市二级三级联动问题彻底解决

posted @ 2017-11-06 11:09  花衣泪人  阅读(3070)  评论(0编辑  收藏  举报