热搜:

官方群号

二维码 扫二维码马上关注
关注有礼
dedecms自定义表单增加联动 后台类型名称显示数字解决方法

今天早群友提问,说表单中是否可以联动,后来我做了一下测试,在添加字段的时候发现没有联动类型,觉得可能不行。

如是查找资源得知与/dede/templets/diy_field_add.htm和 /dede/templets/diy_field_edit.htm有关。找到后打开发现,不是没有联动类型,而且被官方注解了。

发现后并把注释掉的联动选项给恢复。然后在自定义表单里增加字段,填写联动名,在到点了一下预览发布信息。在到后台查看发联动提交后的显示是数字。查找了很多的信息后终于找到需要的故分享如何代码

我在网上找到方法,如下:

  1.在"后台目录"\templets\diy_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: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]; 



?> 
修改完毕。 

需要注意的是:添加新字段时候,表单提示文字必须和联动的组类别名一致,比如我要添加一个表单提示文字是“地区”,那么新增类别组的时候 类别名也要填写“地区”