您好,欢迎来到菜鸟吧源码网(www.cniao8.com)本站只做精品网站源码!
  • 首 页
  • 会员介绍
  •  

    当前位置:主页 > 站长学堂 > dede教程 >
    DedeCms自定义表单联动类型只显示枚举值的问题
    时间:2020-08-07 10:54 作者:菜鸟吧 浏览:收藏 挑错 打印

    首先,如果没有显示联动选项的话,请您先阅读《DedeCms自定义表单中联动类型不可用的解决方法》,下面我们讨论DedeCms自定义表单联动类型只显示枚举值的问题,本文的解决方法适用于DedeCms5.5、5.6,其它版本没有测试。

    相对于上面的方法,解决以下问题:

    1、有多少个自定义的模板,建立多少个diy_list'.$diyid.'.htm,很不灵活

    2、每个自定义表单只能建一个联动类型


    UTF-8的懒人可以下载附件:diy_list.rar,直接替换,diy_list.htm文件替换到\dede\templets下。

    下面是修改方法:

    1.在"后台目录"\templets\diy_list.htm找到(大约在41行):

    $fields[$field] = "<a href='{$fields[$field]}' target='_blank'><img src='p_w_picpath/channeladd.gif' border='0' /> 其它附件</a>";
    }
    在下面加入:

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

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


    //联动类型显示修正结束
    2.找到:

    {/dede:datalist}

    在下面加入:

    01<?php
    02functionGetenums($evalue=0,$egroup)
    03{
    04if( !isset($GLOBALS['em_'.$egroup.'s']) )
    05{
    06$cachefile = DEDEDATA.'/enums/'.$egroup.'.php';
    07if(!file_exists($cachefile))
    08{
    09require_once(DEDEINC.'/enums.func.php');
    10WriteEnumsCache();
    11}
    12if(!file_exists($cachefile))
    13{
    14return'';
    15}
    16else
    17{
    18require_once($cachefile);
    19}
    20}
    21if($evalue>=500)
    22{
    23if($evalue % 500 == 0)
    24{
    25return(isset($GLOBALS['em_'.$egroup.'s'][$evalue]) ? $GLOBALS['em_'.$egroup.'s'][$evalue] : '');
    26}
    27elseif(preg_match("#([0-9]{1,})\.([0-9]{1,})#", $evalue, $matchs))
    28{
    29$esonvalue = $matchs[1];
    30$etopvalue = $esonvalue - ($esonvalue % 500);
    31$esecvalue = $evalue;
    32$GLOBALS['em_'.$egroup.'s'][$etopvalue] = empty($GLOBALS['em_'.$egroup.'s'][$etopvalue])? ''
    33: $GLOBALS['em_'.$egroup.'s'][$etopvalue];
    34$GLOBALS['em_'.$egroup.'s'][$esonvalue] = empty($GLOBALS['em_'.$egroup.'s'][$esonvalue])? ''
    35: $GLOBALS['em_'.$egroup.'s'][$esonvalue];
    36$GLOBALS['em_'.$egroup.'s'][$esecvalue] = empty($GLOBALS['em_'.$egroup.'s'][$esecvalue])? ''
    37: $GLOBALS['em_'.$egroup.'s'][$esecvalue];
    38return$GLOBALS['em_'.$egroup.'s'][$etopvalue].' - '.$GLOBALS['em_'.$egroup.'s'][$esonvalue].' - '.$GLOBALS['em_'.$egroup.'s'][$esecvalue];
    39}
    40else
    41{
    42$elimit = $evalue % 500;
    43$erevalue = $evalue - $elimit;
    44$GLOBALS['em_'.$egroup.'s'][$erevalue] = empty($GLOBALS['em_'.$egroup.'s'][$erevalue])? ''
    45: $GLOBALS['em_'.$egroup.'s'][$erevalue];
    46$GLOBALS['em_'.$egroup.'s'][$evalue] = empty($GLOBALS['em_'.$egroup.'s'][$evalue])? ''
    47: $GLOBALS['em_'.$egroup.'s'][$evalue];
    48return$GLOBALS['em_'.$egroup.'s'][$erevalue].' - '.$GLOBALS['em_'.$egroup.'s'][$evalue];
    49}
    50}
    51}
    52?>


    修改完毕。

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

    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
    我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法下载,联系站长索要。
    如有侵犯您的版权,请给我们来信:admin@cniao8.com,我们尽快处理。

    DEDECMS批量导入excel数据到后台文章系统的开发教程DEDECMS批量导入excel数据到后台文章系
    织梦中TAG标签字数长度限制解决方法织梦中TAG标签字数长度限制解决方法
    dedecms 问答模块时间显示dedecms 问答模块时间显示