dedecms子栏目获取顶级栏目名称

[复制链接]
树苗收集系 发表于 2020-9-15 23:13:13 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
方法一:
  1. {dede:field.typeid runphp=’yes’}$ID = @me;
  2. $sql = “SELECT * FROM `dede_arctype` WHERE id=$ID”;
  3. $query = mysql_query($sql);$row=mysql_fetch_array($query);
  4. $relID = “$row[reid]“; if($relID == 0) {@me = $row[typename];}
  5. else{$sql = “SELECT `typename` FROM `dede_arctype` WHERE id=$relID”;
  6. $query = mysql_query($sql);$row=mysql_fetch_array($query);
  7. @me = $row[typename];}{/dede:field.typeid}
复制代码
这个方法语句有些长。

方法二:
  1. {dede:field.title  runphp='yes'}
  2. list($toptype,$sontype)=split('/',@me);@me=$toptype;
  3. {/dede:field.title}
复制代码

方法三:
  1. {dede:field.typeid runphp='yes'}
  2. $ID = @me; $sql = "SELECT * FROM `dede_arctype` WHERE id=$ID";
  3. $query = mysql_query($sql);$row=mysql_fetch_array($query);
  4. $relID = "$row[reid]"; $topID="$row[topid]";
  5. if($relID == 0) {@me = $row[typename];}
  6. else{$sql = "SELECT `typename` FROM `dede_arctype` WHERE id=$topID";
  7. $query = mysql_query($sql);$row=mysql_fetch_array($query);
  8. @me = $row[typename];}{/dede:field.typeid}
复制代码

方法四(推荐):

打开include/helpers/extend.helper.php,添加一个函数:


  1. <span style="background-color: rgb(255, 255, 255);">/</span>**
  2. *  获取指定栏目id的顶级栏目的名称
  3. *
  4. * @return     string
  5. */
  6. if ( ! function_exists('getTopChannelName'))
  7. {
  8. function getTopChannelName($id) {
  9.    global $dsql;
  10.         $typeinfo = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id='{$id}'");
  11.         if($typeinfo['reid']==0) return $typeinfo['typename'];
  12.         else return getTopChannelName($typeinfo['reid']);
  13. }
  14. }
复制代码

在列表页这么使用:
  1. {dede:field name='id'  function='getTopChannelName(@me)'/}
复制代码

在内容页这么使用:
  1. {dede:field name='typeid'  function='getTopChannelName(@me)'/}
复制代码

附带获取顶级栏目的url:

打开include/helpers/extend.helper.php,添加一个函数:

  1. /**
  2. *  获取指定栏目id的顶级栏目的url
  3. *
  4. * @return     string
  5. */
  6. if ( ! function_exists('getTopChannelUrl'))
  7. {
  8. function getTopChannelUrl($id) {
  9.    global $dsql;
  10.         $typeinfo = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id='{$id}'");
  11.         if($typeinfo['reid']==0) return GetOneTypeUrlA($typeinfo);
  12.         else return getTopChannelUrl($typeinfo['reid']);
  13. }
  14. }
复制代码

使用方法同上。

回复

使用道具 举报

精彩评论2

红颜纷扰红尘 发表于 2020-9-22 22:52:13 | 显示全部楼层
好像还不错!
回复

使用道具 举报

淡看红尘轻笑孤 发表于 2020-10-3 05:19:05 | 显示全部楼层
这个不错,谢谢共享
回复

使用道具 举报

发布主题
推荐阅读 更多
阅读排行 更多
广告位
全国统一客服电话
400-1234-5678

24x7小时免费咨询

  • 官方在线客服

    QQ客服:小西

    点击交谈

    QQ客服:良子

    点击交谈

    QQ客服:闵月

    点击交谈
  • 安徽省合肥市高新区创新产业园

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信

    加入官方微信群