网络上有类似的文章,但是都是不全,错误的方法。所谓一子错,满盘皆输.
以下是本站长整理出来亲身验证无误的方法.
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 |
} |
在下面加入
|
|
|
01 |
//联动类型显示修正开始 |
|
02 |
|
|
03 |
else if($fielddata[1]=='stepselect') |
|
04 |
{ |
|
05 |
$db->Execute('me',"SELECT * FROM `mydiy_stepselect` WHERE egroup='{$field}'"); |
|
06 |
while($arr = $db->GetArray(me)) |
|
07 |
{ |
|
08 |
$egroup = $arr['egroup']; |
|
09 |
} |
|
10 |
$fields[$field] = Getenums("{$fields[$field]}",$egroup); |
|
11 |
} |
|
12 |
|
|
13 |
//联动类型显示修正结束 |
继续找到:
|
|
|
1 |
{/dede:datalist} |
在下面加入:
|
|
|
01 |
<?php |
|
02 |
function Getenums($evalue = 0, $egroup) |
|
03 |
{ |
|
04 |
if (!isset($GLOBALS['em_' . $egroup . 's'])) { |
|
05 |
$cachefile = DEDEDATA . '/enums/' . $egroup . '.php'; |
|
06 |
if (!file_exists($cachefile)) { |
|
07 |
require_once DEDEINC . '/enums.func.php'; |
|
08 |
WriteEnumsCache(); |
|
09 |
} |
|
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 |
|
|
22 |
$esonvalue = $matchs[1]; |
|
23 |
$etopvalue = $esonvalue - $esonvalue % 500; |
|
24 |
$esecvalue = preg_replace('/(?<=\.)[0]+/', '', $evalue); |
|
25 |
|
|
26 |
$GLOBALS['em_' . $egroup . 's'][$etopvalue] = empty($GLOBALS['em_' . $egroup . 's'][$etopvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$etopvalue]; |
|
27 |
|
|
28 |
$GLOBALS['em_' . $egroup . 's'][$esonvalue] = empty($GLOBALS['em_' . $egroup . 's'][$esonvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$esonvalue]; |
|
29 |
|
|
30 |
$GLOBALS['em_' . $egroup . 's'][$esecvalue] = empty($GLOBALS['em_' . $egroup . 's'][$esecvalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$esecvalue]; |
|
31 |
|
|
32 |
return $GLOBALS['em_' . $egroup . 's'][$etopvalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$esonvalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$esecvalue]; |
|
33 |
} |
|
34 |
else |
|
35 |
{ |
|
36 |
$elimit = $evalue % 500; |
|
37 |
$erevalue = $evalue - $elimit; |
|
38 |
$GLOBALS['em_' . $egroup . 's'][$erevalue] = empty($GLOBALS['em_' . $egroup . 's'][$erevalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$erevalue]; |
|
39 |
$GLOBALS['em_' . $egroup . 's'][$evalue] = empty($GLOBALS['em_' . $egroup . 's'][$evalue]) ? '' : $GLOBALS['em_' . $egroup . 's'][$evalue]; |
|
40 |
return $GLOBALS['em_' . $egroup . 's'][$erevalue] . ' - ' . $GLOBALS['em_' . $egroup . 's'][$evalue]; |
|
41 |
} |
|
42 |
} |
|
43 |
} |
|
44 |
} |
|
45 |
?> |
修改完毕
需要注意的是:添加新字段时候,表单提示文字必须和联动的组类别名一致,比如我要添加一个表单提示文字是“课程”,那么新增类别组的时候 类别名也要填写“课程”