织梦栏目页判断栏目导航块是否显示

本文介绍了一种在织梦CMS中优化导航显示的方法,通过添加自定义函数判断栏目是否有子级,从而决定导航块的显示与否,实现了更灵活的导航布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做个笔记,谨防丢失。

先放两张效果图,如果有二级栏目,则在下方加入导航块,没有二级栏目,则不需要添加此导航块。

导航块代码

<div style="float:none;margin-bottom:10px; /}">
    <div class="name">{dede:field name='typeid' function="GetTopTypename(@me)" /}</div>
    <ul class="s_nav">
        {dede:channel type='son' currentstyle="<li class='now'><a href='~typelink~'>~typename~</a></li>"}
        <li><a href="[field:typelink/]">[field:typename/]</a></li>
        {/dede:channel}
    </ul>
</div>

判断有无子级栏目的代码

{dede:field name=typeid runphp="yes"}
  global $dsql;
  $sql = "SELECT id From `#@__arctype` WHERE reid='@me' And ishidden<>1 order by sortrank asc limit 0, 100 ";
  $row = $dsql->GetOne($sql);      
  @me=is_array($row)?'有下级':'没下级';
{/dede:field}

由于织梦只有channelartlist标签才能进行嵌套,所以上方方法行不通。

搜集资料+高人指点,终于摸索出一条行得通的方法。

根据有无二级栏目给最外层div加class去控制整个导航块的显示与否。

在include/common.func.php 文件添加如下方法。 注意:返回字符串都是class名称;

//判断返回样式 是否有子级栏目
function IsSubLevel($id){
    global $dsql;
    global $returnmsg;
    $sql1 = "SELECT reid From `dede_arctype` WHERE id=$id";//判断点击是否为顶级栏目 0顶级栏目 其余非顶级
    $row = $dsql->GetOne($sql1);
    if ($row['reid']==0){
        // 当前顶级栏目是否有子栏目
        $sql = "SELECT id,typename From `dede_arctype` WHERE reid=$id And ishidden<>1 order by sortrank asc limit 0, 100 ";
        $row = $dsql->GetOne($sql);
        if ($row){
            $returnmsg = 'scd_l';
            return $returnmsg;
        }else{
            $returnmsg = 'thishide';
            return $returnmsg;
        }
    }else{  //非顶级栏目
        $returnmsg = 'scd_l';
        return $returnmsg;
    }
}

调用在div添加class即可,最下边是css样式。

<div style="float:none;margin-bottom:10px; /}" class="{dede:field name='typeid' function='IsSubLevel(@me)' /}">
    <div class="name">{dede:field name='typeid' function="GetTopTypename(@me)" /}</div>
        <ul class="s_nav">
            {dede:channel type='son' currentstyle="<li class='now'><a href='~typelink~'>~typename~</a></li>"}
            <li><a href="[field:typelink/]">[field:typename/]</a></li>
            {/dede:channel}
        </ul>
</div>

.thishide{display: none;}
.scd_l{ width:220px; float:left; border:1px solid #0072B8;}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值