星星婚纱摄影 發表於 2024-5-10 00:00:00

详解织梦dedecms5.7 无限级多级栏目菜单调用方法

<p style="margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;">
        以前在用到5.7无限级栏目列表菜单时下载了网上的资料都未成功,因此我参考网上及dedecms本身的channel.lib.php及cattree.lib.php制作了调用标签。</p><p style="margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;">
        1、在include\taglib建立randomartlist.lib.php</p><p style="margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;">
        内容如下:</p><div class="jb51code" style="margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; width: 660px; overflow: hidden; clear: both; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;"><pre class="brush:php;toolbar:false;">&nbsp;&nbsp;CAttribute-&gt;Items,$attlist);
&nbsp;&nbsp;&nbsp;&nbsp;extract($ctag-&gt;CAttribute-&gt;Items,&nbsp;EXTR_SKIP);
&nbsp;&nbsp;&nbsp;&nbsp;$revalue&nbsp;=&nbsp;&#39;&#39;;
&nbsp;&nbsp;&nbsp;&nbsp;//读取固定的缓存块
&nbsp;&nbsp;&nbsp;&nbsp;$cacheid&nbsp;=&nbsp;trim($cacheid);
&nbsp;&nbsp;&nbsp;&nbsp;if($cacheid&nbsp;!=&#39;&#39;)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$revalue&nbsp;=&nbsp;GetCacheBlock($cacheid);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($revalue&nbsp;!=&nbsp;&#39;&#39;)&nbsp;return&nbsp;$revalue;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;//如果属性里没指定栏目id,从引用类里获取栏目信息
&nbsp;&nbsp;&nbsp;&nbsp;if(empty($typeid))
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;isset($refObj-&gt;TypeLink-&gt;TypeInfos[&#39;id&#39;])&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$typeid&nbsp;=&nbsp;$refObj-&gt;TypeLink-&gt;TypeInfos[&#39;id&#39;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$reid&nbsp;=&nbsp;$refObj-&gt;TypeLink-&gt;TypeInfos[&#39;reid&#39;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$topid&nbsp;=&nbsp;$refObj-&gt;TypeLink-&gt;TypeInfos[&#39;topid&#39;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$typeid&nbsp;=&nbsp;0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row2&nbsp;=&nbsp;$dsql-&gt;GetOne(&quot;SELECT&nbsp;reid,topid,channeltype,ispart&nbsp;FROM&nbsp;`dede_arctype`&nbsp;WHERE&nbsp;reid=&#39;$topid&#39;&nbsp;&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!is_array($row2))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$typeid&nbsp;=&nbsp;$reid&nbsp;=&nbsp;$topid&nbsp;=&nbsp;$channeltype&nbsp;=&nbsp;$ispart&nbsp;=&nbsp;0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$reid&nbsp;=&nbsp;$row2[&#39;reid&#39;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$channeltype&nbsp;=&nbsp;$row2[&#39;channeltype&#39;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ispart&nbsp;=&nbsp;$row2[&#39;ispart&#39;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$typepid&nbsp;=&nbsp;$row2[&#39;id&#39;];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;//调用Typeid
&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;!empty($topid)&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$topQuery&nbsp;=&nbsp;&quot;SELECT&nbsp;id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath&nbsp;FROM&nbsp;`dede_arctype`&nbsp;WHERE&nbsp;reid=&#39;$topid&#39;&nbsp;And&nbsp;ishidden&lt;&gt;1&nbsp;order&nbsp;by&nbsp;sortrank&nbsp;asc&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;$dsql-&gt;Execute(&#39;t&#39;,&nbsp;$topQuery);
&nbsp;&nbsp;while($row&nbsp;=&nbsp;$dsql-&gt;GetArray(&#39;t&#39;))
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row[&#39;typelink&#39;]&nbsp;=&nbsp;GetOneTypeUrlA($row);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//处理同级栏目中,当前栏目的样式
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;$row[&#39;id&#39;]==$typeid&nbsp;&nbsp;&amp;&amp;&nbsp;$currentstyle!=&#39;&#39;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;$currentstyle;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;str_replace(&quot;~rel~&quot;,$row[&#39;rel&#39;],$linkOkstr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;str_replace(&quot;~id~&quot;,$row[&#39;id&#39;],$linkOkstr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;str_replace(&quot;~typelink~&quot;,$row[&#39;typelink&#39;],$linkOkstr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;str_replace(&quot;~typename~&quot;,$row[&#39;typename&#39;],$linkOkstr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$revalue&nbsp;.=&nbsp;$linkOkstr;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$revalue&nbsp;.=&nbsp;&quot;{$row[&#39;typename&#39;]}\n&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;randomartlistSon($row[&#39;id&#39;],$typeid,$currentstyle,&nbsp;$revalue);
&nbsp;&nbsp;}
&nbsp;&nbsp;if($cacheid&nbsp;!=&#39;&#39;)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteCacheBlock($cacheid,&nbsp;$revalue);
&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$revalue;
}
&nbsp;
function&nbsp;randomartlistSon($id,$typeid,$currentstyle,&amp;$revalue)
{
&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;$dsql;
&nbsp;&nbsp;&nbsp;&nbsp;$query&nbsp;=&nbsp;&quot;SELECT&nbsp;id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath&nbsp;FROM&nbsp;`dede_arctype`&nbsp;WHERE&nbsp;reid=&#39;{$id}&#39;&nbsp;And&nbsp;ishidden&lt;&gt;1&nbsp;order&nbsp;by&nbsp;sortrank&nbsp;asc&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;$dsql-&gt;Execute($id,&nbsp;$query);
&nbsp;&nbsp;&nbsp;&nbsp;$thisv&nbsp;=&nbsp;&#39;&#39;;
&nbsp;&nbsp;while($row&nbsp;=&nbsp;$dsql-&gt;GetArray($id))
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row[&#39;typelink&#39;]&nbsp;=&nbsp;GetOneTypeUrlA($row);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//处理同级栏目中,当前栏目的样式
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;$row[&#39;id&#39;]==$typeid&nbsp;&nbsp;&amp;&amp;&nbsp;$currentstyle!=&#39;&#39;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;$currentstyle;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;str_replace(&quot;~rel~&quot;,$row[&#39;rel&#39;],$linkOkstr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;str_replace(&quot;~id~&quot;,$row[&#39;id&#39;],$linkOkstr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;str_replace(&quot;~typelink~&quot;,$row[&#39;typelink&#39;],$linkOkstr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$linkOkstr&nbsp;=&nbsp;str_replace(&quot;~typename~&quot;,$row[&#39;typename&#39;],$linkOkstr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$thisv&nbsp;.=&nbsp;$linkOkstr;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$thisv&nbsp;.=&nbsp;&quot;{$row[&#39;typename&#39;]}\n&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;randomartlistSon($row[&#39;id&#39;],$typeid,$currentstyle,&nbsp;$thisv);
&nbsp;&nbsp;}
&nbsp;&nbsp;if($thisv!=&#39;&#39;)&nbsp;$revalue&nbsp;.=&nbsp;&quot;\n$thisv\n&quot;;
}</pre></div><p style="margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;">
        2、调用方式:</p><div class="jb51code" style="margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; width: 660px; overflow: hidden; clear: both; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;"><pre class="brush:xhtml;">&nbsp;{dede:randomartlist&nbsp;topid=&#39;12&#39;&nbsp;current}&lt;a&nbsp;href=&quot;{dede:field&nbsp;name=&#39;typeurl&#39;/}&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{/dede:randomartlist}</pre></div><p style="margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;">
        3、css方式:</p><div class="jb51code" style="margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; width: 660px; overflow: hidden; clear: both; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;"><pre class="brush:css;">&nbsp;&nbsp;.alist{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*第一层修饰*/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.alist&nbsp;ul&nbsp;{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.alist&nbsp;ul&nbsp;li&nbsp;{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.alist&nbsp;ul&nbsp;li&nbsp;a{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.alist&nbsp;ul&nbsp;li&nbsp;a:hover,.alist&nbsp;ul&nbsp;li&nbsp;.thisclass{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*第二层修饰*/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.alist&nbsp;ul&nbsp;li&nbsp;ul{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.alist&nbsp;ul&nbsp;li&nbsp;ul&nbsp;li{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.alist&nbsp;ul&nbsp;li&nbsp;ul&nbsp;li&nbsp;a{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.alist&nbsp;ul&nbsp;li&nbsp;ul&nbsp;li&nbsp;a:hover,.alist&nbsp;ul&nbsp;li&nbsp;ul&nbsp;li&nbsp;&nbsp;.thisclass{}</pre></div><p style="margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, &quot;Microsoft YaHei&quot;;">
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
頁: [1]
查看完整版本: 详解织梦dedecms5.7 无限级多级栏目菜单调用方法