How to get unlimited column subcategories in DEDECMS?
Most corporate websites use DEDECMS. When I was designing a website for a client today, after finishing the DEDE automatic internal linking and full URL spelling formats, I encountered a small problem because there are the most product categories. There are four levels. The customer requested that there be a pop-up menu on the left to call sub-categories at each level, but DEDECMS can only call the first-level category by default. After hard work, Baidu GOOGLE finally figured out this thing. I didn't dare to keep it to myself, so I sent it out to share with friends in need.
Recommended learning: Dream Weaver cms
First, modify the code of the /include/taglib/channerl.lib.php file to the following:
The code is as follows:
<?php function lib_channel(&$ctag,&$refObj) { global $_sys_globals,$envs,$dsql; $attlist = “typeid|0,reid|0,row|100,col|1,type|son,currentstyle|”; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = $ctag->GetInnerText(); if(empty($typeid) && $envs['typeid']!=0) { $typeid = $envs['typeid']; $reid = $envs['reid']; }else{ $reid=0; } if($type==”||$type==’sun’) $type=”son”; if($innertext==”) $innertext = GetSysTemplets(“channel_list.htm”); if($reid==0 && $typeid>0) { $dbrow = $dsql->GetOne(“Select reid From ying_arctype where id=’$typeid’ “); if(is_array($dbrow)) $reid = $dbrow['reid']; } $likeType = ”; if($type==’top’) { $sql = “Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description From ying_arctype where reid=0 And ishidden<>1 order by sortrank asc limit 0,$row”; } else if($type==”son”) { //if($_sys_globals['typeid']>0) $typeid = $_sys_globals['typeid']; if($typeid==0) { return ”; } $sql = “Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description From ying_arctype where reid=’$typeid’ And ishidden<>1 order by sortrank asc limit 0,$row”; } else if($type==”self”) { if($reid==0) { return ”; } $sql = “Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description From ‘ying_arctype’ where reid=’$reid’ And ishidden<>1 order by sortrank asc limit 0,$row”; } //And id<>’$typeid’ $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace(“field”,”[","]“); $dtp2->LoadSource($innertext); $dsql2 = clone $dsql; $dsql->SetQuery($sql); $dsql->Execute(); $line = $row; $GLOBALS['autoindex'] = 0; for($i=0;$i < $line;$i++) { if($col>1) $likeType .= “<dl>\r\n”; for($j=0;$j<$col;$j++) { if($col>1) $likeType .= “<dd>\r\n”; if($row=$dsql->GetArray()) { if($type==’self’ && $row['id']==$typeid) //处理同级栏目中,当前栏目的样式 { if($currentstyle!=”) { $linkOkstr = $currentstyle; $row['typelink'] = GetOneTypeUrlA($row); $linkOkstr = str_replace(“~typelink~”,$row['typelink'],$linkOkstr); $linkOkstr = str_replace(“~typename~”,$row['typename'],$linkOkstr); $likeType .= $linkOkstr; } }else { $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row); if(is_array($dtp2->CTags)) { foreach($dtp2->CTags as $tagid=>$ctag){ if(isset($row[$ctag->GetName()])) { $dtp2->Assign($tagid,$row[$ctag->GetName()]); } elseif (preg_match(‘/^sonchannel[0-9]*$/’,$ctag->GetName())) { $dtp2->Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql2)); } } } $likeType .= $dtp2->GetResult(); } } if($col>1) $likeType .= “</dd>\r\n”; $GLOBALS['autoindex']++; }//Loop Col if($col>1) { $i += $col – 1; $likeType .= ” </dl>\r\n”; } }//Loop for $i reset($dsql2); $dsql->FreeResult(); return $likeType; } function lib_channel_son($ctag,$typeid = 0,$dsql2) { $attlist = “row|100,col|1,currentstyle|”; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = $ctag->GetInnerText(); $dsql3 = clone $dsql2; $likeType = ”; //if($_sys_globals['typeid']>0) $typeid = $_sys_globals['typeid']; if($typeid==0) { return ”; } $sql = “Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description From ying_arctype where reid=’$typeid’ And ishidden<>1 order by sortrank asc limit 0,$row”; //And id<>’$typeid’ $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace(“field”,”[","]“); $dtp2->LoadSource($innertext); $dsql2->SetQuery($sql); $dsql2->Execute(); $line = $row; for($i=0;$i < $line;$i++) { if($col>1) $likeType .= “<dl>\r\n”; for($j=0;$j<$col;$j++) { if($col>1) $likeType .= “<dd>\r\n”; if($row=$dsql2->GetArray()) { $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row); if(is_array($dtp2->CTags)) { foreach($dtp2->CTags as $tagid=>$ctag){ if(isset($row[$ctag->GetName()])) { $dtp2->Assign($tagid,$row[$ctag->GetName()]); } elseif (preg_match(‘/^sonchannel[0-9]*$/’,$ctag->GetName())) { $dtp2->Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql3)); } } } $likeType .= $dtp2->GetResult(); } if($col>1) $likeType .= “</dd>\r\n”; }//Loop Col if($col>1) { $i += $col – 1; $likeType .= ” </dl>\r\n”; } }//Loop for $i reset($dsql3); $dsql2->FreeResult(); return $likeType; } ?>
Use [field:sonchannel0] [/field:sonchannel0] to call in the template. This is used to get the sub-column (using [sonchannel number] as the label name is to prevent embedding The tags cannot be parsed correctly when applied). The purpose of this is to facilitate you to select sub-columns when your column has many sub-columns with infinite levels. Let’s take an example:
The code is as follows:
<ul id="left_nav"> {dede:channel type='son' typeid='16'} <li><a href="[field:typelink/]“>[field:typename/]</a> <ul> [field:sonchannel0] <li><a href="[field:typelink/]“>[field:typename/]</a> <ul> [field:sonchannel1] <li><a href="[field:typelink/]“>[field:typename/]</a> <ul> [field:sonchannel2] <li><a href="[field:typelink/]“>[field:typename/]</a> <ul> [field:sonchannel3] <li><a href="[field:typelink/]“>[field:typename/]</a></li> [/field:sonchannel3] </ul> </li> [/field:sonchannel2] </ul> </li> [/field:sonchannel1] </ul> </li> [/field:sonchannel0] </ul> </li> {/dede:channel} </ul>
Just change the number in the above typeid to the ID of your major category. Because I couldn’t find it in the DEDE official forum, I posted it here. I hope it can be helpful. Convenient and useful.
Note: Please make a backup before modifying the file in case of errors. Some quotation marks in the above code may be automatically converted to full-width. Please modify it to half-width, or you can ask Xiao Han to obtain the modified file.
The above is the detailed content of How to get unlimited column subcategories in DEDECMS. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Mac version
God-level code editing software (SublimeText3)