• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    DedeCms自定义表单联动类型只显示枚举值的问题
    POST TIME:2021-05-24 02:49

    首先,如果没有显示联动选项的话,请您先阅读《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>"; 

    在下面加入:

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

    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]; 
    } 
    } 
    } 
    ?> 


    修改完毕。 

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

    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!