织梦5.7生成栏目树

1 篇文章 0 订阅
1 篇文章 0 订阅

最近用织梦做了两个网站,发现生成栏目树的需求很多,而网上的解决方案都用cattree,但是这个玩意不好用,所以自己写了一个,给大家做参考:

一、在织梦数据里增加一个自定函数:

CREATE DEFINER=`root`@`localhost` FUNCTION `getChildLst2table`(rootId varchar(50)) RETURNS varchar(1000) CHARSET latin1
BEGIN
       DECLARE sTemp VARCHAR(1000);
       DECLARE sTempChd VARCHAR(1000);    
       SET sTemp = '$';
       SET sTempChd =rootId;    
       WHILE sTempChd is not null DO         
         SET sTemp = concat(sTemp,',',sTempChd);                     
         SELECT group_concat(id) INTO sTempChd FROM dede_arctype where reid<>id and FIND_IN_SET(reid,sTempChd)>0;
       END WHILE;
       set sTemp=replace(sTemp,concat('$,',rootId,','),'');
       set sTemp=concat('|',replace(sTemp,',','|,|'),'|');
       set sTemp=replace(sTemp,concat('|$|,|',rootId,'|'),'');
       RETURN sTemp;
     END

 

二、使用如下查询查询某点下的所有子节点:

select id,reid,topid,sortrank,typename,typedir,concat('/plus/list.php?tid=',id)as url,defaultname,char_length(typedir)-char_length(replace(typedir,'/','')) as layer
 from  dede_arctype where instr(getChildLst2table('3'),trim(concat('|',id,'|')))>0 order by sortrank;

注意:

一定在要织梦后台对你的栏目按层次设好排序和存储目录,这里通过存储目录中的/个数来确定层级,用排序号来确定归属。

三、在/plus/增加一个PHP程序来调用这个查询:如下:

<?php
require_once("wangsirDAO.php");
header("Content-type: text/html; charset=gb2312");
$rootid=$_REQUEST["rootid"];
if (!isset($rootid))
{
   echo "没有父节点";
   return;    
}
$dao=new wangsirDAO();
$sql="select id,reid,topid,sortrank,typename,typedir,concat('/plus/list.php?tid=',id)as url,defaultname,char_length(typedir)-char_length(replace(typedir,'/','')) as layer "." from  dede_arctype where instr(getChildLst2table('$rootid'),trim(concat('|',id,'|')))>0 order by sortrank;";
$res=$dao->query($sql);
echo "<ul class='treecotainer'>";
$left=0;
foreach($res as $v)
{
 $tname=$v["typename"];
 $tid=$v["reid"];
 $cid=$v["id"];
 $layer=$v["layer"];
 $s="";
 for($i=0;$i<$layer;$i++)
 {
  $s=$s."&nbsp;";
 }
 echo  "<li class='submenuitem'><h4>".
       $s."<img src='./images/box_icon1.png' border=0><a href='/plus/list.php?tid=".$tid."' style='color:#000;font-weight:bold'>".$tname."</a></h4>";

 echo "</li>";
}
echo "</ul>";

?>

四、在页面模板中通过ajax来调用这个PHP页面来生成层次显示在该显示的地方。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值