phpcms的栏目缓存无限级罗列展示处理代码(亲测)
<p>代码如下:</p>
<p>
<br>
<?php <br>
$a = include_once('D:\\web\\www\\phpcms.test\\caches\\caches_commons\\caches_data\\category_content_3.cache.php'); <br>
function getNav($cid){//组织导航 <br>
global $a; <br>
$n = array(); <br>
if (empty($cid) || empty($a[$cid])) return $n; <br>
//当前 <br>
$n[] = "<a href=\"?cid={$cid}\">{$a[$cid]['catname']}</a>"; <br>
if ($a[$cid]['parentid']) {//有父id <br>
//前面的在当前前面 <br>
$n = array_merge(getNav($a[$cid]['parentid']), $n); <br>
} <br>
return $n; <br>
} <br>
$cid = (int)$_GET['cid']; <br>
$n = getNav($cid); <br>
echo "<a href=\"?cid={$cid}\">chrd</a>>" .implode('>', $n); <br>
echo '<p>kkkkk</p>'; <br>
function doTop($cid){//顶级的处理 <br>
global $a; <br>
$n = array(); <br>
$n[] = "<a href=\"?cid={$cid}\">{$a[$cid]['catname']}</a>";//顶级本身 <br>
//如果需要把同顶级的栏目罗列在这里处理 <br>
return implode('|', $n); <br>
} <br>
function getSub($cid, $focusId = 0){//取子类+有父就递归 <br>
global $a; <br>
$n = array(); <br>
if (empty($a[$cid])) return $n;//数组无cid <br>
$pid = (int)$a[$cid]['parentid'];//父id <br>
$cs = $a[$cid]['arrchildid'];//子类id <br>
!empty($cs) && ($cs = explode(',', $cs) ); <br>
if (empty($pid)) {//顶级父类处理 <br>
$n[] = doTop($cid); <br>
} else {//有父类 <br>
$n = array_merge(getSub($pid, $cid), $n);//合并时,父条在前 <br>
} <br>
if (!empty($cs)) {//有子类 <br>
$sn = array(); <br>
$pInSub = 0; <br>
$sub = 0;//是否有子类 <br>
foreach ($cs as $c) {//只使用子类,顶级及本身与孙类排除 <br>
if (0 == $c ){ //顶级? <br>
//echo '0'; <br>
continue; <br>
} <br>
if (empty($a[$c])) { //数组中没保存到 <br>
//echo '2'; <br>
continue; <br>
} <br>
if ($cid == $c) {//本身 <br>
//echo '3'; <br>
continue; <br>
} <br>
if ($cid != $a[$c]['parentid']) {//孙级,pid不是自己 <br>
//echo 'p'; <br>
continue; <br>
} <br>
$sub = 1;//有子类 <br>
if ( $focusId && ($focusId == $c) ) { <br>
$pInSub = 1;//是否出现在子类中 <br>
$lf = '<span>['; <br>
$rf = ']</span>'; <br>
} else { <br>
$lf = $rf = ''; <br>
} <br>
$sn[] = "{$lf}<a class=\"catId\" href=\"?cid={$c}\">{$a[$c]['catname']}</a>{$rf}"; <br>
} <br><br>
if (!$pInSub) {//不出现在子类中,高亮全部 <br>
$lf = '<span>['; <br>
$rf = ']</span>'; <br>
} else { <br>
$lf = $rf = ''; <br>
} <br>
$all = $sub ? "{$lf}<a class=\"catId\" href=\"?cid={$cid}\">全部</a>{$rf}|" : '';//本子类的全部就是本子类的上级 <br>
$n[] = $all. implode('|', $sn); <br>
} <br>
return $n; <br>
} <br>
$n = getSub($cid); <br>
echo empty($n) ? '无' : implode('<hr >', $n); </p>
<p>
<br><span>如果有必要可以转化成js的处理.听说seo不懂js.想法是把它们的链接先include到html中,只给搜索引擎捉?再js处理这块, </span><br><span>展现效果大概如下 </span><br><img style="max-width:100%!important;height:auto!important;"title="phpcms的栏目缓存无限级罗列展示处理代码(亲测)" alt="phpcms的栏目缓存无限级罗列展示处理代码(亲测)" src="https://zhuji.jb51.net/uploads/img/202305/a01e8873ac0b011bc73392d1c3ce4de6.jpg"><span> </span><br><span>临时帮同事写的,详细的考虑没有想.粗测试了一下,应该没有问题.</span></p>
頁:
[1]