介绍
这篇文章主要介绍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和ishiddenDEDECMS中获取无限栏目子分类的方法