• dede获取顶级栏目名称


    做网站在二级页面需要 获得 从一级页面点进来的链接 的 顶级栏目名称,但dede给的标签貌似只能获得一串名称(顶级/二级/某链接)这样的,所以上网查了一些资料,找到个比较靠谱的。

    1、新建一个文件叫 parentchannel.lib.php

      1 <?php
      2 
      3 /**
      4 
      5 * 父栏目调用标签
      6 
      7 *
      8 
      9 * @version $Id: parentchannel.lib.php 1 9:29 2010年7月6日Z tianya $
     10 
     11 * @package DedeCMS.Taglib
     12 
     13 * @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
     14 
     15 * @license http://help.dedecms.com/usersguide/license.html
     16 
     17 * @link http://www.dedecms.com
     18 
     19 */
     20 
     21 
     22 /*>>dede>>
     23 
     24 <name>父栏目标签</name>
     25 
     26 <type>全局标记</type>
     27 
     28 <for>V55,V56,V57</for>
     29 
     30 <description>父栏目调用标签</description>
     31 
     32 <demo>
     33 
     34 {dede:parentchannel}
     35 
     36 <a href='[field:typeurl/]'>[field:typename/]</a>
     37 
     38 {/dede:parentchannel}
     39 
     40 </demo>
     41 
     42 <attributes>
     43 
     44 <iterm>typeid:指定栏目ID</iterm>
     45 
     46 </attributes>
     47 
     48 >>dede>>*/
     49 
     50 
     51 function lib_parentchannel(&$ctag,&$refObj)
     52 
     53 {
     54 
     55 global $_sys_globals,$dsql;
     56 
     57 
     58 $attlist = "row|100,nosonmsg|,col|1";
     59 
     60 FillAttsDefault($ctag->CAttribute->Items,$attlist);
     61 
     62 extract($ctag->CAttribute->Items, EXTR_SKIP);
     63 
     64 $innertext = $ctag->GetInnerText();
     65 
     66  
     67 
     68 $reid = 0;
     69 
     70 $topid = 0;
     71 
     72 //如果属性里没指定栏目id,从引用类里获取栏目信息
     73 
     74 if(empty($typeid))
     75 
     76 {
     77 
     78 if( isset($refObj->TypeLink->TypeInfos['id']) )
     79 
     80 {
     81 
     82 $typeid = $refObj->TypeLink->TypeInfos['id'];
     83 
     84 $reid = $refObj->TypeLink->TypeInfos['reid'];
     85 
     86 $topid = $refObj->TypeLink->TypeInfos['topid'];
     87 
     88 }
     89 
     90 else {
     91 
     92 $typeid = 0;
     93 
     94 }
     95 
     96 } //如果指定了栏目id,从数据库获取栏目信息
     97 
     98 else
     99 
    100 {
    101 
    102 $row2 = $dsql->GetOne("SELECT * FROM `#@__arctype` WHERE id='$typeid' ");
    103 
    104 $typeid = $row2['id'];
    105 
    106 $reid = $row2['reid'];
    107 
    108 $topid = $row2['topid'];
    109 
    110 $issetInfos = true;
    111 
    112 }
    113 
    114 
    115 $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
    116 
    117 FROM `#@__arctype` WHERE reid='$typeid' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 1";
    118 
    119 $dsql->SetQuery($sql);
    120 
    121 $dsql->Execute();
    122 
    123 $totalRow = $dsql->GetTotalRow();
    124 
    125  
    126 
    127 //And id<>'$typeid'
    128 
    129 $row = $dsql->GetOne("SELECT id,typename,reid,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
    130 
    131 FROM `#@__arctype` WHERE id='$typeid' ");
    132 
    133 if(!is_array($row)) return '';
    134 
    135 if($totalRow==0){
    136 
    137 $typeid = $row['reid'];
    138 
    139 $row = $dsql->GetOne("SELECT id,typename,reid,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
    140 
    141 FROM `#@__arctype` WHERE id='$typeid' ");
    142 
    143 if(!is_array($row)) return '';
    144 
    145 }
    146 
    147 if(trim($innertext)=='') $innertext = GetSysTemplets("part_type_list.htm");
    148 
    149 
    150 $dtp = new DedeTagParse();
    151 
    152 $dtp->SetNameSpace('field','[',']');
    153 
    154 $dtp->LoadSource($innertext);
    155 
    156 if(!is_array($dtp->CTags))
    157 
    158 {
    159 
    160 unset($dtp);
    161 
    162 return '';
    163 
    164 }
    165 
    166 else
    167 
    168 {
    169 
    170 $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
    171 
    172 foreach($dtp->CTags as $tagid=>$ctag)
    173 
    174 {
    175 
    176 if(isset($row[$ctag->GetName()])) $dtp->Assign($tagid,$row[$ctag->GetName()]);
    177 
    178 }
    179 
    180 $revalue = $dtp->GetResult();
    181 
    182 unset($dtp);
    183 
    184 return $revalue;
    185 
    186 }
    187 
    188 }
    189 
    190 ?>

    放到\include\taglib下

    2、{dede:parentchannel}[field:typename/]{/dede:parentchannel}调用

    OK!

    学习...
  • 相关阅读:
    授权中的with admin option和with grant option
    CentOS6.2(64bit)下mysql5.6.16主从同步配置
    linux zip命令
    从模版中找到控件的方法和找到样式的方法
    WPF 在事件中绑定命令(不可以在模版中绑定命令)
    WPF: ShowDialog() 切换到其他应用窗口后,再切换回来无法让子窗口总在最上方
    TreeViewItem实现整行选中 (两种用法)
    BitmapImage 读取内存流和显示图片
    IsKeyboardFocused -- 键盘焦点
    WPF中的imagesource 和内存图片的处理
  • 原文地址:https://www.cnblogs.com/istianyu/p/3022398.html
Copyright © 2020-2023  润新知