我們在用織夢系統制作自定義表單時,有時需要使用到聯動類型,比如說城市二級三級聯動,這就需要對織夢自定義表單進行二次開發。今天筆者就跟大家分享一下如何在織夢自定義表單添加城市二級三級聯動。
第一:在織夢自定義表單中添加聯動類型
織夢自定義表單中默認情況下是沒有聯動類型這個選項,要想實現城市聯動功能就必須要有聯動類型,下面教你怎么調用出聯動類型,原因就是織夢官方默認把聯動類型在自定義表單中注釋掉了,我們讓他顯示就可以。我們需要修改兩個文件,下面是方法。
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];
}
}
}
?>
到此,在織夢自定義表單中添加城市二級三級聯動問題徹底解決
