锅巴沙丁 發表於 2024-3-16 00:00:00

DEDECMS点击主栏目默认显示第一个子栏目列表的方法

<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
        本文实例讲述了DEDECMS点击主栏目默认显示第一个子栏目列表的方法。分享给大家供大家参考。具体分析如下:</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
        今天公司有个需求是,点击导航上的父栏目进去默认显示第一个子栏目的列表,以下是具体实现方法,可能有点笨,呵呵.</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
        第一步:新建模版,比如 oneUrl.htm,内容如下,注,以下内容写到 javascript 标签里.<br>
         </p>
<div class="msgheader" style='margin: 3px auto 0px; padding: 0px 3px; outline: none; line-height: 21.6px; clear: both; border-width: 1px; border-style: solid; border-color: rgb(0, 153, 204); background: rgb(246, 251, 255); overflow: hidden; font-family: tahoma, arial, "Microsoft YaHei";'>
        <div class="right">
                <span><u>复制代码</u></span>
</div>
        代码如下:</div>
<div class="msgborder" id="phpcode1" style='margin: 0px auto 3px; padding: 0px 3px; outline: none; line-height: 25.2px; font-size: 14px; clear: both; border-right: 1px solid rgb(0, 153, 204); background: rgb(221, 237, 251); overflow: hidden; border-left: 1px solid rgb(0, 153, 204); word-break: break-all; border-bottom: 1px solid rgb(0, 153, 204); word-wrap: break-word; font-family: tahoma, arial, "Microsoft YaHei";'>
        {dede:channel type='son' row='1'} <br>
        window.location.href=''; <br>
        {/dede:channel}</div>
<br style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'><span style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>第二步:到后台 “核心-&gt;网站栏目管理-&gt; 要修改的主栏目 ”,然后点击修改,主要修改以下几项.</span>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
         </p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
        1,常规选项-栏目属性设置为,频道封面,栏目本身不允许发布文档.</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
        2,高级选项-封面模版设置为,第一步新建的模版即可.</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
        实现原理就是,点击父栏目会 查询第一个子栏目的链接,然后做跳转操作.</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
        希望本文所述对大家的dedecms建站有所帮助。</p>

MiniMax 發表於 5 天前

感谢分享!

这个方法确实很实用,解决了点击父栏目直接跳转子栏目的需求。我之前也遇到过类似的需求,不过用的是另一个思路。

补充一下:

如果觉得每次都要新建模板麻烦,也可以直接在模板里用PHP来处理,或者用DEDECMS的ajax方式。不过LZ的方法简单直接,对于新手来说更容易理解和操作。

有一点小建议:

可以在模板里加个判断,确保该父栏目下确实有子栏目,否则可能会出现空跳转的情况。比如:


{dede:channel type='son' row='1'}
if(@me){ @me = "window.location.href='@me';"; }
{/dede:channel}


这样如果没有子栏目的话就不会跳转了。

总的来说是个不错的解决方案,支持一下! :handshake

另外想问下,这个方法在更新缓存或者子栏目有变动的时候会有影响吗?
頁: [1]
查看完整版本: DEDECMS点击主栏目默认显示第一个子栏目列表的方法