找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1137|回复: 0

[分享] dede在任一子级栏目获取顶级栏目名称 typename,包括该顶级栏目下的文章页

[复制链接]
发表于 2018-7-9 21:22:33 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
找到 include/taglib/type.lib.php , 复制,  重命名为 toptype.lib.php

查找
  1. function lib_type(&$ctag,&$refObj)
复制代码


修改为:

  1. function lib_toptype(&$ctag,&$refObj)
复制代码


查找 $row = $dsql->GetOne

注释掉 //$row = $dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `dede_arctype` where id='$typeid' ");

添加3行:

  1. $topid=$dsql->GetOne("Select topid From `dede_arctype` where id='$typeid' ");
  2. $topid=$topid['topid'];
  3. $row=$dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `dede_arctype` where id='$topid' ");
复制代码


模板调用:
{dede:toptype}[field:typename/]{/dede:toptype}

修改后的toptype.lib.php

  1. <?php

  2. if(!defined('DEDEINC')) exit('Request Error!');

  3. function lib_toptype(&$ctag,&$refObj)
  4. {
  5.     global $dsql,$envs;

  6.     $attlist='typeid|0';
  7.     FillAttsDefault($ctag->CAttribute->Items,$attlist);
  8.     extract($ctag->CAttribute->Items, EXTR_SKIP);
  9.     $innertext = trim($ctag->GetInnerText());

  10.     if($typeid==0) {
  11.         $typeid = ( isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : $envs['typeid'] );
  12.     }

  13.   if(empty($typeid)) return '';

  14.     //$row = $dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `dede_arctype` where id='$typeid' ");

  15.     $topid=$dsql->GetOne("Select topid From `dede_arctype` where id='$typeid' ");
  16.     $topid=$topid['topid'];
  17.     $row=$dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `dede_arctype` where id='$topid' ");
  18.    
  19.     if(!is_array($row)) return '';
  20.     if($row['topid']==0){$row['topid']=$row['id'];}
  21.     if(trim($innertext)=='') $innertext = GetSysTemplets("part_type_list.htm");
  22.    
  23.     $dtp = new DedeTagParse();
  24.     $dtp->SetNameSpace('field','[',']');
  25.     $dtp->LoadSource($innertext);
  26.     if(!is_array($dtp->CTags))
  27.     {
  28.         unset($dtp);
  29.         return '';
  30.     }
  31.     else
  32.     {
  33.         $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
  34.         foreach($dtp->CTags as $tagid=>$ctag)
  35.         {
  36.             if(isset($row[$ctag->GetName()])) $dtp->Assign($tagid,$row[$ctag->GetName()]);
  37.         }
  38.         $revalue = $dtp->GetResult();
  39.         unset($dtp);
  40.         return $revalue;
  41.     }
  42. }


  43. ?>
复制代码


        

        

                如果想获取任一栏目的上级栏目,可将topid---->改为--->reid,最后记得改函数名和文件名

                retype.lib.php
               

  1.                         <?php

  2.                

  3.                         

  4.                

  5.                         if(!defined('DEDEINC')) exit('Request Error!');

  6.                

  7.                         

  8.                

  9.                         function lib_retype(&$ctag,&$refObj)

  10.                

  11.                         {

  12.                

  13.                             global $dsql,$envs;

  14.                

  15.                         

  16.                

  17.                             $attlist='typeid|0';

  18.                

  19.                             FillAttsDefault($ctag->CAttribute->Items,$attlist);

  20.                

  21.                             extract($ctag->CAttribute->Items, EXTR_SKIP);

  22.                

  23.                             $innertext = trim($ctag->GetInnerText());

  24.                

  25.                         

  26.                

  27.                             if($typeid==0) {

  28.                

  29.                                 $typeid = ( isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : $envs['typeid'] );

  30.                

  31.                             }

  32.                

  33.                         

  34.                

  35.                           if(empty($typeid)) return '';

  36.                

  37.                         

  38.                

  39.                             //$row = $dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `dede_arctype` where id='$typeid' ");

  40.                

  41.                         

  42.                

  43.                             $reid=$dsql->GetOne("Select reid From `dede_arctype` where id='$typeid' ");

  44.                

  45.                             $reid=$reid['reid'];

  46.                

  47.                             $row=$dsql->GetOne("Select id,reid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `dede_arctype` where id='$reid' ");

  48.                

  49.                            

  50.                

  51.                             if(!is_array($row)) return '';

  52.                

  53.                             if($row['reid']==0){$row['reid']=$row['id'];}

  54.                

  55.                             if(trim($innertext)=='') $innertext = GetSysTemplets("part_type_list.htm");

  56.                

  57.                            

  58.                

  59.                             $dtp = new DedeTagParse();

  60.                

  61.                             $dtp->SetNameSpace('field','[',']');

  62.                

  63.                             $dtp->LoadSource($innertext);

  64.                

  65.                             if(!is_array($dtp->CTags))

  66.                

  67.                             {

  68.                

  69.                                 unset($dtp);

  70.                

  71.                                 return '';

  72.                

  73.                             }

  74.                

  75.                             else

  76.                

  77.                             {

  78.                

  79.                                 $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);

  80.                

  81.                                 foreach($dtp->CTags as $tagid=>$ctag)

  82.                

  83.                                 {

  84.                

  85.                                     if(isset($row[$ctag->GetName()])) $dtp->Assign($tagid,$row[$ctag->GetName()]);

  86.                

  87.                                 }

  88.                

  89.                                 $revalue = $dtp->GetResult();

  90.                

  91.                                 unset($dtp);

  92.                

  93.                                 return $revalue;

  94.                

  95.                             }

  96.                

  97.                         }

  98.                

  99.                         


  100.                

  101.                         ?>

  102.         

  103.         
复制代码


               

                模板调用: {dede:retype}[field:typename/]{/dede:retype}

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

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

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

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

关闭

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

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

GMT+8, 2025-2-1 13:52 , Processed in 0.038163 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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