一个资源分享、信息整合的综合性站点。

标题: dedecms子栏目获取顶级栏目名称 [打印本页]

作者: 树苗收集系    时间: 2020-9-15 23:13
标题: dedecms子栏目获取顶级栏目名称
方法一:
  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. }
复制代码

使用方法同上。


作者: 红颜纷扰红尘    时间: 2020-9-22 22:52
好像还不错!
作者: 淡看红尘轻笑孤    时间: 2020-10-3 05:19
这个不错,谢谢共享




欢迎光临 一个资源分享、信息整合的综合性站点。 (https://www.sorv.cn/) Powered by Discuz! X3.4