我在使用的分类信息的时候需要添加联动属性,结果去添加联动属性的时候,发现只可以添加一级联动和三级联动。
二级联动无法添加了。
在自己的5.6的后台添加的时候,发现是可以的。估计又是5.7版本的bug了。
于是分析了代码,和大家分享下解决的办法:
首先我们找到我们的模板源码下面的 dede/stepselect_main.php 这个文件,
将这段代码
else if($action=='addenum_save')
{
if(empty($ename) || empty($egroup))
{
Showmsg("类别名称或组名称不能为空!","-1");
exit();
}
if($issign == 1 || $topvalue == 0)
{
$enames = explode(',', $ename);
foreach($enames as $ename)
{
$arr = $dsql->GetOne("SELECT * FROM `dede_sys_enum` WHERE egroup='$egroup' AND (evalue MOD 500)=0 ORDER BY disorder DESC ");
if(!is_array($arr)) $disorder = $evalue = ($issign==1 ? 1 : 500);
else $disorder = $evalue = $arr['disorder'] + ($issign==1 ? 1 : 500);
$dsql->ExecuteNoneQuery("INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
VALUES('$ename','$evalue','$egroup','$disorder','$issign'); ");
}
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!".$dsql->GetError(), $ENV_GOBACK_URL);
exit();
} else if ($issign == 2 && $topvalue != 0)
{
$minid = $topvalue;
$maxnum = 500; // 三级子类最多500个
$enames = explode(',', $ename);
foreach ($enames as $ename)
{
$arr = $dsql->GetOne("SELECT * FROM `dede_sys_enum` WHERE egroup='$egroup' AND evalue LIKE '$topvalue.%%%' ORDER BY evalue DESC ");
if(!is_array($arr))
{
$disorder = $minid;
$evalue = $minid.'.001';
}
else
{
$disorder = $minid;
preg_match("#([0-9]{1,}).([0-9]{1,})#", $arr['evalue'], $matchs);
$addvalue = $matchs[2] + 1;
$addvalue = sprintf("d", $addvalue);
$evalue = $matchs[1].'.'.$addvalue;
}
$sql = "INSERT INTO `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 + 500;
$enames = explode(',', $ename);
foreach($enames as $ename)
{
$arr = $dsql->GetOne("SELECT * FROM `dede_sys_enum` WHERE egroup='$egroup' AND evalue>$minid AND evalue<$maxid ORDER BY evalue DESC ");
if(!is_array($arr))
{
$disorder = $evalue = $minid+1;
}
else
{
$disorder = $arr['disorder']+1;
$evalue = $arr['evalue']+1;
}
$dsql->ExecuteNoneQuery("INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
VALUES('$ename','$evalue','$egroup','$disorder','$issign'); ");
}
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!", $ENV_GOBACK_URL);
exit();
}
}
替换为:
else if($action=='addenum_save')
{
if(empty($ename) || empty($egroup)) {
Showmsg("类别名称或组名称不能为空!","-1");
exit();
}
if($issign==1 || $topvalue==0)
{
$enames = explode(',', $ename);
foreach($enames as $ename)
{
$arr = $dsql->GetOne("Select * From `dede_sys_enum` where egroup='$egroup' And (evalue mod 500)=0 order by evalue desc ");
if(!is_array($arr)) $disorder = $evalue = ($issign==1 ? 1 : 500);
else $disorder = $evalue = $arr['disorder'] + ($issign==1 ? 1 : 500);
$dsql->ExecuteNoneQuery("Insert into `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 + 500;
$enames = explode(',', $ename);
foreach($enames as $ename)
{
$arr = $dsql->GetOne("Select * From `dede_sys_enum` where egroup='$egroup' And evalue>$minid And evalue<$maxid order by evalue desc ");
if(!is_array($arr))
{
$disorder = $evalue = $minid+1;
}
else
{
$disorder = $arr['disorder']+1;
$evalue = $arr['evalue']+1;
}
$dsql->ExecuteNoneQuery("Insert into `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
values('$ename','$evalue','$egroup','$disorder','$issign'); ");
}
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!", $ENV_GOBACK_URL);
exit();
}
}
然后保存,在系统后台更新系统缓存就可以了的。现在在后台的联动类别管理里面就可以增加二级选择了。
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!
联动
相关文档推荐
织梦DEDECMS 栏目文章文章命名规则修改
织梦DEDECMS 栏目文章文章命名规则修改, 每次添加栏目的时候 都要改文章命名规则,十分麻烦, 修改下面这个地方就可以一改永亦,织梦模板网为您解答 找到includecommon.inc.php 搜索 $cfg_df_namerule 把: $cfg_df_namerule = {typedir}/{Y}/{M}{D}/{aid
织梦dedecms列表页中调用当前栏目文章总数的办法
实现这个效果有两种 第一种:runphp=yes 织梦自带的runphp参数,在您要统计数目的处插手以下代码: {dede:field.typeid runphp=yes} global $dsql; $row = $dsql-GetOne(select count(*) as dd from dede_archives where typeid = @me); @me = $row[dd]; {/d
织梦dedecms如何调用三级栏目名称和链接
织梦如何批量调用三级栏目下的栏目和链接,其实有两种调用方法,不过都是要用到织梦的channelartlist标签,下面是方法: 方法一(我们以调用栏目ID为1的栏目下子栏目为例子): {dede:channelartlist typeid=1 row=10 } {dede:field name=typename/} {dede:s
织梦dedecms设置栏目外部链接的注意事项
我们在用织梦dedecms时候,有时候因为特殊需要可能要用到外部链接。但是很多朋友说设置好后外部链接无法打开或者打开错误,在这里小编为您讲解下外部链接设置的注意事项。 1、首先如果我们设置外部链接为站内的某个栏目的话,需要注意以下几点: 举个栗子:
织梦后台栏目怎么显示没有审核的文档数量
在织梦的后台当中如果是没有审核的文章有很多,每次审核都要打开待审核文档,如果内容有很多,就很麻烦,修改的方法: 打开/include/typeunit.class.admin.php文件 找到: function ListAllType 在上面加上下面的代码: //获取所有栏目的未审核文档ID数 func
织梦DedeCMS搜索指定多个栏目的文档
针对织梦高级开发教程会用到,指定栏目搜索及多个栏目合并搜索的要求。织梦DedeCMS默认的搜索可以搜索全部栏目或者指定的搜索某一个栏目,不能搜索指定的多个栏目,需要修改后台文件才能实现。 1、在搜索框表单里加个typeid提交过去 例如 form name=search a
织梦安装使用织梦二次开发织梦优化织梦标签dedecms教程织梦安全
织梦资讯网
织梦模板
dede
外语学校
织梦鬼故事
竞价网站源码
竞价培训网
门户网站
织梦二次开发
织梦笑话网
dedecms笑话网
织梦源码
网站建设
搞笑图片
织梦教程
旅游网站源码
织梦旅游网
学校培训
html5
企业织梦源码
医院源码
后台样式
移动营销页
整形医院
大学医院
新手建站
客服代码
洗衣机维修
企业网站
淘宝客
导航菜单
教育网站
学校源码
装修网站
装修模板
美容整形
女性健康
妈妈网
机械源码
建站公司
珠宝首饰
苹果网站
手机资讯
美女图片
织梦模版打包
妇科源码
安卓市场源码
男性时尚网
健康之家
app应用网站
笑话网站
下载站
美女图片网
中医院网站
家装网站源码
QQ网站
标牌网站
魔兽世界网
淘宝客源码
YY网站源码
别墅设计网站
服装搭配网
宝宝起名网
站长网站
婚庆网站
脑科医院源码
笑话源码
肝胆医院
意外怀孕源码
工作室