首页 网络技术
  1. 正文

织梦联动地区后台/前台/邮件显示为数字的真正解决方法

织梦联动地区后台/前台/邮件显示为数字的真正解决方法,网络上有类似的文章,但是都是不全,错误的方法。所谓一子错,满盘皆输,以下是本站长整理出来亲身验证无误的方法。

织梦联动地区后台显示为数字的真正解决方法,其实官方也有,但是不能直接调用,我把它提取出来单独写个在自定义函数文件里。

1、打开/dede/templets/diy_list.htm找到(大约在41行)

elseif($fielddata[1]=='addon')
{
$fields[$field]="<imgsrc='images/channeladd.gif'border='0'/>其它附件";
}

在下面加入

elseif($fielddata[1]=='stepselect')
{
$db->Execute('me',"SELECT*FROM`dede_stepselect`WHEREegroup='{$field}'");
while($arr=$db->GetArray(me))
{
$egroup=$arr['egroup'];
}
$fields[$field]=Getenums("{$fields[$field]}",$egroup);
}

2、打开/include/extend.func.php在这个自定义函数文件里,最下面加入

/**
*获取联动枚举相关信息
*
*@accesspublic
*@paramstring$evalue枚举值
*@paramstring$egroup枚举组名
*@returnstring
*/
if(!function_exists('Getenums'))
{
functionGetenums($evalue=0,$egroup)
{
if(!isset($GLOBALS['em_'.$egroup.'s'])){
$cachefile=DEDEDATA.'/enums/'.$egroup.'.php';
if(!file_exists($cachefile)){
require_onceDEDEINC.'/enums.func.php';
WriteEnumsCache();
}
if(!file_exists($cachefile)){
return'';
}else{
require_once$cachefile;
}
}
if($evalue>=500){
if($evalue%500==0){
returnisset($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=($egroup=='nativeplace')?preg_replace('/(?<=\.)[0]+/','',$evalue):$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];
}
}
}
}
}

后台自定义表单接收效果

织梦联动地区后台/前台/邮件显示为数字的真正解决方法

发送到邮件时联动地区显示为数字的解决方法

首先参考这个教程做好《织梦自定义表单发送邮件超简单版》

其次确定你的 /include/extend.func.php 已经添加了上面第2步的自定义方法进去了

最后把 /plus/diy.php 里面的

 $mailbody.="{$fieldvalue[0]}:{${$field}}";

改成

 if($fieldvalue[1]=='stepselect')
{
$dsql->Execute('me',"SELECT*FROM`dede_stepselect`WHEREegroup='{$field}'");
while($arr=$dsql->GetArray(me))
{
$egroup=$arr['egroup'];
}
$mailbody.="{$fieldvalue[0]}:".Getenums(${$field},$egroup)."\r\n";
}
else
{
$mailbody.="{$fieldvalue[0]}:{${$field}}\r\n";
}

邮件最终显示效果

织梦联动地区后台/前台/邮件显示为数字的真正解决方法

本文标题:织梦联动地区后台/前台/邮件显示为数字的真正解决方法
本文链接:https://www.qqooo.cn/post/589.html
版权说明:网站文章均来源于手工整理和网友投稿,若有不妥之处请来信 feelym@88.com 处理,谢谢!