phpcms单页顶级栏目默认打开第一个子栏目方法

首先phpcms单页如过下面有子栏目,那么当前栏目是不能被编辑内容的,且访问后是没有内容的,首先不知道这是不是产品设计的一个缺陷,但是在使用过程中确实在后台也没有找到其他的对应解决办法,刚好在某QQ群里发现一个小伙伴也遇到了这样的困扰,于是我就在模版里解决了着一个问题。

首先我们要在导航的loop中加入下面的代码:

<?php 
    if ($r[type] == 1 && $r[child] == 1) { //判断是否为单页 || 判断是否包含子栏目 
        $child_arrary=explode(',',$r[arrchildid]); //获取子栏目id 
        $r[url]=$CATEGORYS[$child_arrary[1]][url]; //获取第一个子栏目url 
    } 
?> 

加完后如以下例子:

{pc:content action="category" catid="0" num="25" siteid="$siteid" order="listorder ASC"}
<ul>
  <li><a href="{siteurl($siteid)}"><span>首页</span></a></li>
  {loop $data $r}
    <?php 
        if ($r[type] == 1 && $r[child] == 1) { //判断是否为单页 || 判断是否包含子栏目 
            $child_arrary=explode(',',$r[arrchildid]); //获取子栏目id 
            $r[url]=$CATEGORYS[$child_arrary[1]][url]; //获取第一个子栏目url 
        } 
    ?>
  <li><a href="{$r[url]}"><span>{$r[catname]}</span></a></li>
  {/loop}
</ul>
{/pc} 

作完成后,再去导航栏看看你的单页父亲级URL会变成其第一个子栏目的url,这样的这比使用跳转要好一些,至少我自己是这样感觉的。

当然,在结合下面的代码更完美。

在我们的单页模版里加一个301跳转,代码如下:
 

<?php  
if ( $child ) {//判断是否包含子栏目    
    $child_arrary = explode( ',', $arrchildid );//获取子栏目id 
    $url = $CATEGORYS[ $child_arrary[ 1 ] ][ url ];//获取第一个子栏目url 
    header( "HTTP/1.1 301 Moved Permanently" );//301重定向声明 
    header( "Location:" . $url );//跳转至第一个子栏目URL  
} 
?> 

 

posted @ 2019-03-25 11:30  yuan9580  阅读(764)  评论(0编辑  收藏  举报