织梦5.7bug修复后台联动不能添加二级栏目的解决方法
II级联动无法添加了.
在自己的V.VI的后台添加的时候,发现是可以的.估计又是V.VII版本的bug了.
于是分析了代码,和大家分享下解决的办法:
更多精彩就在: 51免费论文网|www.jxszl.com
>首先我们找到我们的模板源码下面的dede/stepselect_main.php这个文件,
将这段代码
elseif($action==addenum_save)
{
if(empty($ename)||empty($egroup))
{
Showmsg("类别名称或组名称不能为空!","-I.");
exit();
}
if($issign==I.||$topvalue==0)
{
$enames=explode(,,$ename);
foreach($enamesas$ename)
{
$arr=$dsql->GetOne("SELECT*FROM`dede_sys_enum`WHEREegroup=$egroupAND(evalueMODV00)=0ORDERBYdisorderDESC");
if(!is_array($arr))$disorder=$evalue=($issign==I.?I.:V00);
else$disorder=$evalue=$arr[disorder]+($issign==I.?I.:V00);
$dsql->ExecuteNoneQuery("INSERTINTO`dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
VALUES($ename,$evalue,$egroup,$disorder,$issign);");
}
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!".$dsql->GetError(),$ENV_GOBACK_URL);
exit();
}elseif($issign==II&&$topvalue!=0)
{
$minid=$topvalue;
$maxnum=V00;//III级子类最多V00个
$enames=explode(,,$ename);
foreach($enamesas$ename)
{
$arr=$dsql->GetOne("SELECT*FROM`dede_sys_enum`WHEREegroup=$egroupANDevalueLIKE$topvalue.%%%ORDERBYevalueDESC");
if(!is_array($arr))
{
$disorder=$minid;
$evalue=$minid..00I.;
}
else
{
$disorder=$minid;
preg_match("#([0-IX]{I.,}).([0-IX]{I.,})#",$arr[evalue],$matchs);
$addvalue=$matchs[II]+I.;
$addvalue=sprintf("d",$addvalue);
$evalue=$matchs[I.]...$addvalue;
}
$sql="INSERTINTO`dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
VALUES($ename,$evalue,$egroup,$disorder,$issign);";
//echo$sql;exit;
$dsql->ExecuteNoneQuery($sql);
}
//echo$minid;
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!",$ENV_GOBACK_URL);
exit();
}else{
$minid=$topvalue;
$maxid=$topvalue+V00;
$enames=explode(,,$ename);
foreach($enamesas$ename)
{
$arr=$dsql->GetOne("SELECT*FROM`dede_sys_enum`WHEREegroup=$egroupANDevalue>$minidANDevalue<$maxidORDERBYevalueDESC");
if(!is_array($arr))
{
$disorder=$evalue=$minid+I.;
}
else
{
$disorder=$arr[disorder]+I.;
$evalue=$arr[evalue]+I.;
}
$dsql->ExecuteNoneQuery("INSERTINTO`dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
VALUES($ename,$evalue,$egroup,$disorder,$issign);");
}
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!",$ENV_GOBACK_URL);
exit();
}
}
替换为:
elseif($action==addenum_save)
{
if(empty($ename)||empty($egroup)){
Showmsg("类别名称或组名称不能为空!","-I.");
exit();
}
if($issign==I.||$topvalue==0)
{
$enames=explode(,,$ename);
foreach($enamesas$ename)
{
$arr=$dsql->GetOne("Select*From`dede_sys_enum`whereegroup=$egroupAnd(evaluemodV00)=0orderbyevaluedesc");
if(!is_array($arr))$disorder=$evalue=($issign==I.?I.:V00);
else$disorder=$evalue=$arr[disorder]+($issign==I.?I.:V00);
$dsql->ExecuteNoneQuery("Insertinto`dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
values($ename,$evalue,$egroup,$disorder,$issign);");
}
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!".$dsql->GetError(),$ENV_GOBACK_URL);
exit();
}
else
{
$minid=$topvalue;
$maxid=$topvalue+V00;
$enames=explode(,,$ename);
foreach($enamesas$ename)
{
$arr=$dsql->GetOne("Select*From`dede_sys_enum`whereegroup=$egroupAndevalue>$minidAndevalue<$maxidorderbyevaluedesc");
if(!is_array($arr))
{
$disorder=$evalue=$minid+I.;
}
else
{
$disorder=$arr[disorder]+I.;
$evalue=$arr[evalue]+I.;
}
$dsql->ExecuteNoneQuery("Insertinto`dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
values($ename,$evalue,$egroup,$disorder,$issign);");
}
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!",$ENV_GOBACK_URL);
exit();
}
}
然后保存,在系统后台更新系统缓存就可以了的.现在在后台的联动类别管理里面就可以增加II级选择了.
原文链接:http://www.jxszl.com/biancheng/dedecms/74799.html