DEDECMS中获取无限栏目子分类的方法

  介绍

这篇文章主要介绍DEDECMS中获取无限栏目子分类的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强> DEDECMS中怎么获取无限栏目子分类?

做企业网站大部分是使用DEDECMS,今天在给客户设计网站时,把黛德自动内链和URL全拼格式搞定后,又遇到了个小问题,因为产品分类最多有四级,客户要求在左侧有个弹出式菜单调用各级子分类出来,而DEDECMS默认只能调用一级分类。经过努力,百度+ GOOGLE +自己脑袋,终于搞定了这个东西,不敢独享,发出来给有需要的朋友分享。

首先要把/include/标签/channerl.lib。php文件的代码修改成以下的:

代码如下:

& lt; php ?   函数lib_channel(和ctag美元和美元refObj)   {   全球_sys_globals美元,美元env, dsql美元;   美元attlist="里德typeid | 0 | 0 | 100行,坳| 1 |类型的儿子,currentstyle |”;   FillAttsDefault ($ ctag→CAttribute→项目,attlist美元);   提取($ ctag→CAttribute→项目,EXTR_SKIP);   innertext=实现ctag→美元GetInnerText ();   如果(空($类型id),,$ env [& # 39; typeid # 39;] !=0)   {   类型id=美元env (& # 39; typeid # 39;);   里德=美元env(& # 39;里德# 39;);   其他}{   里德美元=0;   }   如果($ type==" | | $ type==疤簟?$ type="儿子”;   如果(innertext=="实现美元)innertext=GetSysTemplets实现美元(“channel_list.htm”);   如果($里德==0,,typeid>美元;0)   {   dbrow=dsql→美元GetOne(“选择里德从ying_arctype id=美元类型id”);   如果里德(is_array (dbrow美元))$=$ dbrow[& # 39;里德# 39;];   }   $ likeType=?   if ($ type==岸ゼ丁?   {   $ sql="选择id、typename typedir, isdefault,理解,defaultname, namerule2, moresite, siteurl, sitepath,描述   从ying_arctype里德=0和ishidden<在1 order by sortrank asc极限0美元行”;   }   else if ($ type=="儿子")   {//如果($ _sys_globals [& # 39; typeid # 39;]在0)类型id=_sys_globals美元[& # 39;typeid # 39;];   如果($类型id==0) {   返回”;   }   $ sql="选择id、typename typedir, isdefault,理解,defaultname, namerule2, moresite, siteurl, sitepath,描述   从ying_arctype里德=美元类型id和ishidden<在1 order by sortrank asc极限0美元行”;   }   else if ($ type=="自我")   {   如果里德($==0){   返回”;   }   $ sql="选择id、typename typedir, isdefault,理解,defaultname, namerule2, moresite, siteurl, sitepath,描述   从“ying_arctype”里德=美元里德和ishidden<在1 order by sortrank asc极限0美元行”;   }//id<在“typeid美元”   美元dtp2=new DedeTagParse ();   美元dtp2→SetNameSpace(“场”,“[“,“]”);   美元dtp2→LoadSource ($ innertext)实现;   dsql2=克隆dsql美元;   美元dsql→SetQuery ($ sql);   美元dsql→执行();   行=美元行;   $全局[& # 39;自动索引# 39;]=0;   (我=0;美元我& lt;行;我+ +)美元   {   如果(col>美元;1)likeType美元。=" & lt; dl> \ r \ n”;   (j=0; j<美元;坳美元;$ j + +)   {   如果(col>美元;1)likeType美元。=" & lt; dd> \ r \ n”;   如果行=dsql→美元GetArray ())   {   if ($ type==晕摇?,行美元[& # 39;id # 39;]==$类型id)//处理同级栏目中,当前栏目的样式   {   如果($ currentstyle !=")   {   linkOkstr=currentstyle美元;   行美元[& # 39;typelink& # 39;]=GetOneTypeUrlA($行);   美元linkOkstr=str_replace (“~ typelink ~”,美元行[& # 39;typelink& # 39;], linkOkstr美元);   美元linkOkstr=str_replace (“~ typename ~”,美元行[& # 39;typename& # 39;], linkOkstr美元);   likeType美元。=$ linkOkstr;   }   其他}   {   行美元[& # 39;typelink& # 39;]=$ row [& # 39; typeurl& # 39;]=GetOneTypeUrlA($行);   如果(is_array ($ dtp2→CTags))   {   foreach ($ dtp2→CTags tagid美元=祝辞ctag美元){   如果收取($ row [ctag→美元GetName ())))   {   美元dtp2→分配(tagid,行美元(美元ctag→GetName ()));   }   elseif (preg_match ('/^ sonchannel[0 - 9] */'美元,美元ctag→GetName ()))   {   美元dtp2→分配(tagid美元,lib_channel_son (ctag,行美元[& # 39;id # 39;], dsql2美元));   }   }   }   likeType美元。=$ dtp2→GetResult ();   }   }   如果(col>美元;1)likeType美元。=" & lt;/dd> \ r \ n”;   $全局[& # 39;自动索引# 39;]+ +;   }//循环坳   如果(col>美元;1)   {   $ +=$ col - 1;   likeType美元。=" & lt;/dl> \ r \ n”;   }   }//循环我美元   重置($ dsql2);   美元dsql→FreeResult ();   返回likeType美元;   }   函数lib_channel_son (ctag,类型id=0美元,美元dsql2)   {   美元attlist="行| 100年,卡扎菲| 1,currentstyle |”;   FillAttsDefault ($ ctag→CAttribute→项目,attlist美元);   提取($ ctag→CAttribute→项目,EXTR_SKIP);   innertext=实现ctag→美元GetInnerText ();   dsql3=克隆dsql2美元;   $ likeType=?//如果($ _sys_globals [& # 39; typeid # 39;]在0)类型id=_sys_globals美元[& # 39;typeid # 39;];   如果($类型id==0) {   返回”;   }   $ sql="选择id、typename typedir, isdefault,理解,defaultname, namerule2, moresite, siteurl, sitepath,描述   从ying_arctype里德=美元类型id和ishidden

DEDECMS中获取无限栏目子分类的方法