From 86d4e37f427f0e16cd5ce1b275656cc00a76025c Mon Sep 17 00:00:00 2001 From: tianya Date: Tue, 12 Apr 2022 19:31:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=B1=BB=E4=BF=A1=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/system/taglib/infolink.lib.php | 116 ++++++++++++++++++++++++----- 1 file changed, 97 insertions(+), 19 deletions(-) diff --git a/src/system/taglib/infolink.lib.php b/src/system/taglib/infolink.lib.php index ba3fe69a..b535adba 100755 --- a/src/system/taglib/infolink.lib.php +++ b/src/system/taglib/infolink.lib.php @@ -20,6 +20,9 @@ $data = json_decode(file_get_contents($cachefile)); foreach ($data as $key => $value) { $GLOBALS['em_infotypes'][$key] = $value; } +function is_str_float($value){ + return ((int)$value != $value) ; +} function lib_infolink(&$ctag, &$refObj) { global $dsql, $nativeplace, $infotype, $hasSetEnumJs, $cfg_cmspath, $cfg_mainsite; @@ -61,22 +64,58 @@ function lib_infolink(&$ctag, &$refObj) $fields['nativeplace'] .= " {$em}\r\n"; } } else { - $sontype = (($nativeplace % 500 != 0) ? $nativeplace : 0); - $toptype = (($nativeplace % 500 == 0) ? $nativeplace : ($nativeplace - ($nativeplace % 500))); - - $fields['nativeplace'] = " {$em_nativeplaces[$toptype]} > "; - foreach ($em_nativeplaces as $eid => $em) { - if ($eid < $toptype + 1 || $eid > $toptype + 499) continue; - if ($eid == $nativeplace) { - $fields['nativeplace'] .= " {$em}\r\n"; - } else { - $fields['nativeplace'] .= " {$em}\r\n"; + $sontype = (($nativeplace % 500 != 0) ? $nativeplace : 0); // 子集 + $toptype = (($nativeplace % 500 == 0) ? (int)$nativeplace : (int)($nativeplace - ($nativeplace % 500))); // 顶级联动分类 + $fields['nativeplace'] = " {$em_nativeplaces[$toptype]} >"; + if ($nativeplace % 500 == 0) { + // 1级分类 + foreach ($em_nativeplaces as $eid => $em) { + if ($eid < $toptype + 1 || $eid > $toptype + 499) continue; + if (is_str_float($eid)) continue; // 仅显示2级 + if ($eid == $nativeplace) { + $fields['nativeplace'] .= " {$em}\r\n"; + } else { + $fields['nativeplace'] .= " {$em}\r\n"; + } + } + } else if(!is_str_float($nativeplace)) { + // 2级分类 + $fields['nativeplace'] .= " {$em_nativeplaces[$sontype]}"; + $i = 0; + $ff = ""; + foreach ($em_nativeplaces as $eid => $em) { + if ($eid < $sontype + 1 && $eid > $sontype) + { + if (is_str_float($eid)) { + $i++; + } + if ($eid === $nativeplace) { + $ff .= " {$em}\r\n"; + } else { + $ff .= " {$em}\r\n"; + } + } + } + if($i > 0) $fields['nativeplace'] .= " > "; + $fields['nativeplace'] .= $ff; + } else { + // 3级分类 + $t = intval($nativeplace); + $fields['nativeplace'] .= " {$em_nativeplaces[$t]} >"; + foreach ($em_nativeplaces as $eid => $em) { + if ($eid < $t + 1 && $eid > $t) + { + if ($eid === $nativeplace) { + $fields['nativeplace'] .= " {$em}\r\n"; + } else { + $fields['nativeplace'] .= " {$em}\r\n"; + } + } } } } //小分类链接 if (empty($infotype) || is_array($smalltypes)) { - foreach ($em_infotypes as $eid => $em) { if (!is_array($smalltypes) && $eid % 500 != 0) continue; if (is_array($smalltypes) && !in_array($eid, $smalltypes)) continue; @@ -88,14 +127,53 @@ function lib_infolink(&$ctag, &$refObj) } } else { $sontype = (($infotype % 500 != 0) ? $infotype : 0); - $toptype = (($infotype % 500 == 0) ? $infotype : ($infotype - ($infotype % 500))); - $fields['infotype'] .= "{$em_infotypes[$toptype]} > "; - foreach ($em_infotypes as $eid => $em) { - if ($eid < $toptype + 1 || $eid > $toptype + 499) continue; - if ($eid == $infotype) { - $fields['infotype'] .= " {$em}\r\n"; - } else { - $fields['infotype'] .= " {$em}\r\n"; + $toptype = (($infotype % 500 == 0) ? (int)$infotype : (int)($infotype - ($infotype % 500))); + $fields['infotype'] = "{$em_infotypes[$toptype]} > "; + + if ($infotype % 500 == 0) { + // 1级分类 + foreach ($em_infotypes as $eid => $em) { + if ($eid < $toptype + 1 || $eid > $toptype + 499) continue; + if (is_str_float($eid)) continue; // 仅显示2级 + if ($eid == $infotype) { + $fields['infotype'] .= " {$em}\r\n"; + } else { + $fields['infotype'] .= " {$em}\r\n"; + } + } + } else if(!is_str_float($infotype)) { + // 2级分类 + $fields['infotype'] .= " {$em_infotypes[$sontype]}"; + $i = 0; + $ff = ""; + foreach ($em_infotypes as $eid => $em) { + if ($eid < $sontype + 1 && $eid > $sontype) + { + if (is_str_float($eid)) { + $i++; + } + if ($eid === $infotype) { + $ff .= " {$em}\r\n"; + } else { + $ff .= " {$em}\r\n"; + } + } + } + if($i > 0) $fields['infotype'] .= " > "; + $fields['infotype'] .= $ff; + } else { + // 3级分类 + $t = intval($infotype); + $fields['infotype'] .= " {$em_infotypes[$t]} >"; + foreach ($em_infotypes as $eid => $em) { + if ($eid < $t + 1 && $eid > $t) + { + if ($eid === $infotype) { + $fields['infotype'] .= " {$em}\r\n"; + } else { + $fields['infotype'] .= " {$em}\r\n"; + } + } } } }