DedeCMS如何通过顶级栏目获取栏目树
最近在研究织梦的系统,导航栏为显示顶级目录,但每点开一个顶级目录下显示,左边是顶级栏目下的所有栏目的栏目目录树,右边是这个顶级栏目的新闻列表,如下图:
DedeCMS如何通过顶级栏目获取栏目树
每点一个顶级栏目可以在页中获得所点栏目的所有信息,包括ID,typename等等栏目的信息.
{dede:field name='id' /}
这个就是得到当然页当前栏目的ID,如果当然点的是顶级栏目的话,这个ID就是TOPID了,如果点的是顶级栏目下的二级或三级栏目这个ID就不是TOPID了,这样就需要对这个ID进行判断一下,废话少说,直接在common.func.php中添加一函数,函数如下:
function gtype( $id ) { global $dsql ; global $dsqls ; $tags = '' ; $sql = "Select * From `detest_arctype` where id='$id' " ; /***通过ID查询信息SQL语句 $dsql ->SetQuery( $sql ); $dsql ->Execute(); while ( $row = $dsql ->GetArray()) { if (! empty empty ( $row [ 'topid' ])) ---------如果TOPID非空说明接数的参数ID不是顶级栏目的ID,那就是次栏目的ID了。 { $sid = $row [ 'topid' ];} ---------那么就可以让$SID被赋值为这个ID的顶级栏目的ID是什么,TOPID else { $sid = $row [ 'id' ];} -------- 否则就是顶级栏目的ID } $query = "Select * From `detest_arctype` where topid=reid and topid='$sid' " ; $dsql ->Execute( 'type' , $query ); while ( $row = $dsql ->GetArray( 'type' )) -----二级栏目信息 { $idd = $row [ 'id' ]; $link = GetOneTypeUrlA( $row ); -------栏目的连接 $querys = "Select * From `detest_arctype` where reid=" . $row [ 'id' ]. " and topid='$sid' " ; $dsql ->SetQuery( $querys ); $dsql ->Execute(); $tag = '' ; while ( $rows = $dsql ->GetArray()) -----三级栏目信息 { $links = GetOneTypeUrlA( $rows ); $tag .= ( $tag == '' ? ' <li><a href="' . $links . '" target="_blank"><strong>·</strong>' . $rows [ 'typename' ]. '</a></li>' : ' <li><a href="' . $links . '" target="_blank"><strong>·</strong>' . $rows [ 'typename' ]. '</a></li>' ); } //开源软件:phpfensi.com $tags .= '<h2><a href=' . $link . '>' . $row [ 'typename' ]. '</a></h2>' . $tag ; ------有序的排起来 } return $tags ; }最后在list_article.htm 中调些函数:
{dede:field name='id' function="gtype(@me)" /}
查看更多关于DedeCMS如何通过顶级栏目获取栏目树 - DeDecms的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did6051