凯旋之音 發表於 2023-10-10 00:00:00

dede5.7 动态导航下拉菜单的实现代码

<p>
        <span style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>1.修改 include下面taglib文件夹里的channel.lib.php文件 替换成我的</span></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";'>
        <p class="right">
                <span><u>复制代码</u></span></p>
        <p>
                代码如下:</p>
</div>
<p class="msgborder" 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";'>
        <br>
        &lt;?php<br>
        function lib_channel(&amp;$ctag,&amp;$refObj)<br>
        {<br>
        global $_sys_globals,$envs,$dsql;<br>
        $attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|";<br>
        FillAttsDefault($ctag-&gt;CAttribute-&gt;Items,$attlist);<br>
        extract($ctag-&gt;CAttribute-&gt;Items, EXTR_SKIP);<br>
        $innertext = $ctag-&gt;GetInnerText();<br>
        if(empty($typeid) &amp;&amp; $envs['typeid']!=0)<br>
        {<br>
        $typeid = $envs['typeid'];<br>
        $reid = $envs['reid'];<br>
        }else{<br>
        $reid=0;<br>
        } <br>
        if($type==''||$type=='sun') $type="son";<br>
        if($innertext=='') $innertext = GetSysTemplets("channel_list.htm");<br>
        if($reid==0 &amp;&amp; $typeid&gt;0)<br>
        {<br>
        $dbrow = $dsql-&gt;GetOne("Select reid From &lt;a href="mailto:`dede_arctype"&gt;`dede_arctype&lt;/a&gt;` where id='$typeid' ");<br>
        if(is_array($dbrow)) $reid = $dbrow['reid'];<br>
        }<br>
        $likeType = '';<br>
        if($type=='top')<br>
        {<br>
        $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description<br>
        From &lt;a href="mailto:`dede_arctype"&gt;`dede_arctype&lt;/a&gt;` where reid=0 And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br>
        }<br>
        else if($type=="son")<br>
        {<br>
        //if($_sys_globals['typeid']&gt;0) $typeid = $_sys_globals['typeid'];<br>
        if($typeid==0) {<br>
        return '';<br>
        }<br>
        $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description<br>
        From &lt;a href="mailto:`dede_arctype"&gt;`dede_arctype&lt;/a&gt;` where reid='$typeid' And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br>
        }<br>
        else if($type=="self")<br>
        {<br>
        if($reid==0) {<br>
        return '';<br>
        }<br>
        $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description<br>
        From &lt;a href="mailto:`dede_arctype"&gt;`dede_arctype&lt;/a&gt;` where reid='$reid' And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br>
        }<br>
        //And id&lt;&gt;'$typeid'<br>
        $dtp2 = new DedeTagParse();<br>
        $dtp2-&gt;SetNameSpace("field","[","]");<br>
        $dtp2-&gt;LoadSource($innertext);<br>
        $dsql2 = clone $dsql;<br>
        $dsql-&gt;SetQuery($sql);<br>
        $dsql-&gt;Execute();<br>
        $line = $row;<br>
        $GLOBALS['autoindex'] = 0;<br>
        for($i=0;$i &lt; $line;$i++)<br>
        {<br>
        if($col&gt;1) $likeType .= "&lt;dl&gt;\r\n";<br>
        for($j=0;$j&lt;$col;$j++)<br>
        {<br>
        if($col&gt;1) $likeType .= "&lt;dd&gt;\r\n";<br>
        if($row=$dsql-&gt;GetArray())<br>
        {<br>
        if($type=='self' &amp;&amp; $row['id']==$typeid) //处理同级栏目中,当前栏目的样式<br>
        {<br>
        if($currentstyle!='')<br>
        {<br>
        $linkOkstr = $currentstyle;<br>
        $row['typelink'] = GetOneTypeUrlA($row);<br>
        $linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr);<br>
        $linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);<br>
        $likeType .= $linkOkstr;<br>
        }<br>
        }else<br>
        {<br>
        $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);<br>
        if(is_array($dtp2-&gt;CTags))<br>
        {<br>
        foreach($dtp2-&gt;CTags as $tagid=&gt;$ctag){<br>
        if(isset($row[$ctag-&gt;GetName()]))<br>
        {<br>
        $dtp2-&gt;Assign($tagid,$row[$ctag-&gt;GetName()]);<br>
        }<br>
        elseif (preg_match('/^sonchannel*$/',$ctag-&gt;GetName()))<br>
        {<br>
        $dtp2-&gt;Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql2));<br>
        }<br>
        }<br>
        }<br>
        $likeType .= $dtp2-&gt;GetResult();<br>
        }<br>
        }<br>
        if($col&gt;1) $likeType .= "&lt;/dd&gt;\r\n";<br>
        $GLOBALS['autoindex']++;<br>
        }//Loop Col<br>
        if($col&gt;1)<br>
        {<br>
        $i += $col - 1;<br>
        $likeType .= " &lt;/dl&gt;\r\n";<br>
        }<br>
        }//Loop for $i<br>
        reset($dsql2);<br>
        $dsql-&gt;FreeResult();<br>
        return $likeType;<br>
        }<br>
        function lib_channel_son($ctag,$typeid = 0,$dsql2)<br>
        {<br>
        $attlist = "row|100,col|1,currentstyle|";<br>
        FillAttsDefault($ctag-&gt;CAttribute-&gt;Items,$attlist);<br>
        extract($ctag-&gt;CAttribute-&gt;Items, EXTR_SKIP);<br>
        $innertext = $ctag-&gt;GetInnerText();<br>
        $dsql3 = clone $dsql2;<br>
        $likeType = '';<br>
        //if($_sys_globals['typeid']&gt;0) $typeid = $_sys_globals['typeid'];<br>
        if($typeid==0) {<br>
        return '';<br>
        }<br>
        $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description<br>
        From &lt;a href="mailto:`dede_arctype"&gt;`dede_arctype&lt;/a&gt;` where reid='$typeid' And ishidden&lt;&gt;1 order by sortrank asc limit 0,$row";<br>
        //And id&lt;&gt;'$typeid'<br>
        $dtp2 = new DedeTagParse();<br>
        $dtp2-&gt;SetNameSpace("field","[","]");<br>
        $dtp2-&gt;LoadSource($innertext);<br>
        $dsql2-&gt;SetQuery($sql);<br>
        $dsql2-&gt;Execute();<br>
        $line = $row;<br>
        for($i=0;$i &lt; $line;$i++)<br>
        {<br>
        if($col&gt;1) $likeType .= "&lt;dl&gt;\r\n";<br>
        for($j=0;$j&lt;$col;$j++)<br>
        {<br>
        if($col&gt;1) $likeType .= "&lt;dd&gt;\r\n";<br>
        if($row=$dsql2-&gt;GetArray())<br>
        {<br>
        $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);<br>
        if(is_array($dtp2-&gt;CTags))<br>
        {<br>
        foreach($dtp2-&gt;CTags as $tagid=&gt;$ctag){<br>
        if(isset($row[$ctag-&gt;GetName()]))<br>
        {<br>
        $dtp2-&gt;Assign($tagid,$row[$ctag-&gt;GetName()]);<br>
        }<br>
        elseif (preg_match('/^sonchannel*$/',$ctag-&gt;GetName()))<br>
        {<br>
        $dtp2-&gt;Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql3));<br>
        }<br>
        }<br>
        }<br>
        $likeType .= $dtp2-&gt;GetResult();<br>
        }<br>
        if($col&gt;1) $likeType .= "&lt;/dd&gt;\r\n";<br>
        }//Loop Col<br>
        if($col&gt;1)<br>
        {<br>
        $i += $col - 1;<br>
        $likeType .= " &lt;/dl&gt;\r\n";<br>
        }<br>
        }//Loop for $i<br>
        reset($dsql3);<br>
        $dsql2-&gt;FreeResult();<br>
        return $likeType;<br>
        }<br>
        ?&gt;</p>
<p>
        <br style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'><span style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>2.调用</span><br style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'><span style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>这是我调用的代码 </span></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";'>
        <p class="right">
                <span><u>复制代码</u></span></p>
        <p>
                代码如下:</p>
</div>
<p class="msgborder" 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";'>
        <br>
        {dede:channel typeid='1'}<br>
        &lt;li&gt;<br>
        &lt;a class="" href="" title=""&gt;<br>
        &lt;img src="***.gif" /&gt;&lt;/a&gt;<br>
        &lt;div class="sub"&gt;<br>
        &lt;ul&gt; <br>
        &lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;/li&gt;<br>
        &lt;/ul&gt;<br>
        &lt;/div&gt;<br>
        &lt;/li&gt;<br>
        {/dede:channel}</p>
頁: [1]
查看完整版本: dede5.7 动态导航下拉菜单的实现代码