找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1345|回复: 0

[分享] dede5.7 动态导航下拉菜单的实现代码

[复制链接]
发表于 2018-3-10 08:10:35 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
点评:dede5.7 动态导航下拉菜单的实现代码,需要的朋友可以参考一下

   1.修改 include下面taglib文件夹里的channel.lib.php文件 替换成我的

代码如下:

  1. <?php
  2. function lib_channel(&$ctag,&$refObj)
  3. {
  4. global $_sys_globals,$envs,$dsql;
  5. $attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|";
  6. FillAttsDefault($ctag->CAttribute->Items,$attlist);
  7. extract($ctag->CAttribute->Items, EXTR_SKIP);
  8. $innertext = $ctag->GetInnerText();
  9. if(empty($typeid) && $envs['typeid']!=0)
  10. {
  11. $typeid = $envs['typeid'];
  12. $reid = $envs['reid'];
  13. }else{
  14. $reid=0;
  15. }
  16. if($type==''||$type=='sun') $type="son";
  17. if($innertext=='') $innertext = GetSysTemplets("channel_list.htm");
  18. if($reid==0 && $typeid>0)
  19. {
  20. $dbrow = $dsql->GetOne("Select reid From <a href="mailto:`dede_arctype">`dede_arctype</a>` where id='$typeid' ");
  21. if(is_array($dbrow)) $reid = $dbrow['reid'];
  22. }
  23. $likeType = '';
  24. if($type=='top')
  25. {
  26. $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description
  27. From <a href="mailto:`dede_arctype">`dede_arctype</a>` where reid=0 And ishidden<>1 order by sortrank asc limit 0,$row";
  28. }
  29. else if($type=="son")
  30. {
  31. //if($_sys_globals['typeid']>0) $typeid = $_sys_globals['typeid'];
  32. if($typeid==0) {
  33. return '';
  34. }
  35. $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description
  36. From <a href="mailto:`dede_arctype">`dede_arctype</a>` where reid='$typeid' And ishidden<>1 order by sortrank asc limit 0,$row";
  37. }
  38. else if($type=="self")
  39. {
  40. if($reid==0) {
  41. return '';
  42. }
  43. $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description
  44. From <a href="mailto:`dede_arctype">`dede_arctype</a>` where reid='$reid' And ishidden<>1 order by sortrank asc limit 0,$row";
  45. }
  46. //And id<>'$typeid'
  47. $dtp2 = new DedeTagParse();
  48. $dtp2->SetNameSpace("field","[","]");
  49. $dtp2->LoadSource($innertext);
  50. $dsql2 = clone $dsql;
  51. $dsql->SetQuery($sql);
  52. $dsql->Execute();
  53. $line = $row;
  54. $GLOBALS['autoindex'] = 0;
  55. for($i=0;$i < $line;$i++)
  56. {
  57. if($col>1) $likeType .= "<dl>\r\n";
  58. for($j=0;$j<$col;$j++)
  59. {
  60. if($col>1) $likeType .= "<dd>\r\n";
  61. if($row=$dsql->GetArray())
  62. {
  63. if($type=='self' && $row['id']==$typeid) //处理同级栏目中,当前栏目的样式
  64. {
  65. if($currentstyle!='')
  66. {
  67. $linkOkstr = $currentstyle;
  68. $row['typelink'] = GetOneTypeUrlA($row);
  69. $linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr);
  70. $linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);
  71. $likeType .= $linkOkstr;
  72. }
  73. }else
  74. {
  75. $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
  76. if(is_array($dtp2->CTags))
  77. {
  78. foreach($dtp2->CTags as $tagid=>$ctag){
  79. if(isset($row[$ctag->GetName()]))
  80. {
  81. $dtp2->Assign($tagid,$row[$ctag->GetName()]);
  82. }
  83. elseif (preg_match('/^sonchannel[0-9]*$/',$ctag->GetName()))
  84. {
  85. $dtp2->Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql2));
  86. }
  87. }
  88. }
  89. $likeType .= $dtp2->GetResult();
  90. }
  91. }
  92. if($col>1) $likeType .= "</dd>\r\n";
  93. $GLOBALS['autoindex']++;
  94. }//Loop Col
  95. if($col>1)
  96. {
  97. $i += $col - 1;
  98. $likeType .= " </dl>\r\n";
  99. }
  100. }//Loop for $i
  101. reset($dsql2);
  102. $dsql->FreeResult();
  103. return $likeType;
  104. }
  105. function lib_channel_son($ctag,$typeid = 0,$dsql2)
  106. {
  107. $attlist = "row|100,col|1,currentstyle|";
  108. FillAttsDefault($ctag->CAttribute->Items,$attlist);
  109. extract($ctag->CAttribute->Items, EXTR_SKIP);
  110. $innertext = $ctag->GetInnerText();
  111. $dsql3 = clone $dsql2;
  112. $likeType = '';
  113. //if($_sys_globals['typeid']>0) $typeid = $_sys_globals['typeid'];
  114. if($typeid==0) {
  115. return '';
  116. }
  117. $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description
  118. From <a href="mailto:`dede_arctype">`dede_arctype</a>` where reid='$typeid' And ishidden<>1 order by sortrank asc limit 0,$row";
  119. //And id<>'$typeid'
  120. $dtp2 = new DedeTagParse();
  121. $dtp2->SetNameSpace("field","[","]");
  122. $dtp2->LoadSource($innertext);
  123. $dsql2->SetQuery($sql);
  124. $dsql2->Execute();
  125. $line = $row;
  126. for($i=0;$i < $line;$i++)
  127. {
  128. if($col>1) $likeType .= "<dl>\r\n";
  129. for($j=0;$j<$col;$j++)
  130. {
  131. if($col>1) $likeType .= "<dd>\r\n";
  132. if($row=$dsql2->GetArray())
  133. {
  134. $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
  135. if(is_array($dtp2->CTags))
  136. {
  137. foreach($dtp2->CTags as $tagid=>$ctag){
  138. if(isset($row[$ctag->GetName()]))
  139. {
  140. $dtp2->Assign($tagid,$row[$ctag->GetName()]);
  141. }
  142. elseif (preg_match('/^sonchannel[0-9]*$/',$ctag->GetName()))
  143. {
  144. $dtp2->Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql3));
  145. }
  146. }
  147. }
  148. $likeType .= $dtp2->GetResult();
  149. }
  150. if($col>1) $likeType .= "</dd>\r\n";
  151. }//Loop Col
  152. if($col>1)
  153. {
  154. $i += $col - 1;
  155. $likeType .= " </dl>\r\n";
  156. }
  157. }//Loop for $i
  158. reset($dsql3);
  159. $dsql2->FreeResult();
  160. return $likeType;
  161. }
  162. ?>
复制代码


2.调用
这是我调用的代码

代码如下:

  1. {dede:channel typeid='1'}
  2. <li>
  3. <a class="" href="[field:typeurl/]" title="">[field:typename/]
  4. <img src="***.gif" /></a>
  5. <div class="sub">
  6. <ul>
  7. [field:sonchannel0]<li><a href="[field:typeurl/]">[field:typename/]</a></li>[/field:sonchannel0]
  8. </ul>
  9. </div>
  10. </li>
  11. {/dede:channel}
复制代码

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-2-2 13:58 , Processed in 0.033514 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表