DedeCMS如何通过顶级栏目获取栏目树 – DeDecms


avatar
pcwnas 2023-04-21 178

原文来自:https://www.zixuephp.com

DedeCMS如何通过顶级栏目获取栏目树

最近在研究织梦的系统,导航栏为显示顶级目录,但每点开一个顶级目录下显示,左边是顶级栏目下的所有栏目的栏目目录树,右边是这个顶级栏目的新闻列表,如下图:

DedeCMS如何通过顶级栏目获取栏目树

每点一个顶级栏目可以在页中获得所点栏目的所有信息,包括ID,typename等等栏目的信息.

{dede:field name='id' /}

这个就是得到当然页当前栏目的ID,如果当然点的是顶级栏目的话,这个ID就是TOPID了,如果点的是顶级栏目下的二级或三级栏目这个ID就不是TOPID了,这样就需要对这个ID进行判断一下,废话少说,直接在common.func.php中添加一函数,函数如下:

  1. functiongtype($id)
  2. {
  3. global$dsql;
  4. global$dsqls;
  5. $tags='';
  6. $sql="Select*From`detest_arctype`whereid='$id'";/***通过ID查询信息SQL语句
  7. $dsql->SetQuery($sql);
  8. $dsql->Execute();
  9. while($row=$dsql->GetArray())
  10. {
  11. if(!emptyempty($row['topid']))---------如果TOPID非空说明接数的参数ID不是顶级栏目的ID,那就是次栏目的ID了。
  12. {$sid=$row['topid'];}---------那么就可以让$SID被赋值为这个ID的顶级栏目的ID是什么,TOPID
  13. else{$sid=$row['id'];}--------否则就是顶级栏目的ID
  14. }
  15. $query="Select*From`detest_arctype`wheretopid=reidandtopid='$sid'";
  16. $dsql->Execute('type',$query);
  17. while($row=$dsql->GetArray('type'))-----二级栏目信息
  18. {
  19. $idd=$row['id'];
  20. $link=GetOneTypeUrlA($row);-------栏目的连接
  21. $querys="Select*From`detest_arctype`wherereid=".$row['id']."andtopid='$sid'";
  22. $dsql->SetQuery($querys);
  23. $dsql->Execute();
  24. $tag='';
  25. while($rows=$dsql->GetArray())-----三级栏目信息
  26. {
  27. $links=GetOneTypeUrlA($rows);
  28. $tag.=($tag==''?'<li><ahref="'.$links.'"target="_blank"><strong>·</strong>'.$rows['typename'].'</a></li>':'<li><ahref="'.$links.'"target="_blank"><strong>·</strong>'.$rows['typename'].'</a></li>');
  29. }
  30. $tags.='<h2><ahref='.$link.'>'.$row['typename'].'</a></h2>'.$tag;------有序的排起来
  31. }
  32. return$tags;
  33. }

最后在list_article.htm 中调些函数:

{dede:field name='id' function="gtype(@me)" /}