DedeCMS联动类别地区调用不显示第三级城市的解决方法

首先我们先弄清楚织梦联动类别地区调用不显示第三级城市的原因:

1、附加表dede_addoninfos或者你的其他表中的字段nativeplace数据类型为int型,无法保存第三级城市对应的的evalue值(比如:东山区  对应的  10001.001)

2、枚举表dede_sys_enum中的第三级城市对应evalue值错误(比如:东山区 10001.1 应该为 东山区 10001.001)

织梦联动类别地区调用不显示第三级城市的解决方法:

1、修改附加表dede_addoninfos或者你的其他表中的字段nativeplace把它的数据类型为char型

后台-系统-SQL命令行工具,执行一下这个语句:

ALTER TABLE dede_addoninfos CHANGE nativeplace nativeplace CHAR(
20 ) NOT NULL DEFAULT
‘0’

 

注意:dede_addoninfos是你的附加表名,如果你是其他模型记得改成你的:

2、修正枚举表dede_sys_enum所有第三级城市对应的evalue值

打开/include/enums.func.php 找到:

foreach($egroups as $egroup)

 

在它上面加入:


if($egroup ==
‘nativeplace’ || $egroups[
‘nativeplace’] ==
‘nativeplace’)

{

$dsql->SetQuery(
“SELECT id,evalue FROM `dede_sys_enum` WHERE egroup=’nativeplace'”);

$dsql->Execute();


while($row = $dsql->GetArray())

{

$res[]= $row;

}

foreach($res as $k=>$v)

{


if(preg_match(
“#([0-9]{1,}).([0-9]{1,})#”, $v[
‘evalue’], $matchs))

{

$valKey = $matchs[
1] + $matchs[
2]/
1000;

$v[
‘evalue’] = $valKey;

$sql =
“UPDATE `dede_sys_enum` SET evalue=”.$v[
‘evalue’] .
” WHERE id=”.$v[
‘id’];

$dsql->ExecuteNoneQuery($sql);

}

}

}

 

最后在后台-联动类别管理-更新一下【地区】的更新缓存即可。