edeCMS织梦栏目页/文章详情页获取顶级栏目名称

网站建设 2022-07-27 08:12www.1681989.com免费网站
我们使用DedeCMS织梦开发网站时,经常会碰到需要调用当前顶级栏目名称,而织梦默认{dede:field name=typename /} 只可以获取当前栏目的名称,而不是当前栏目顶级栏目名称。 方法一 { dede : field . typeid runphp = yes } $ID = @ me ; $sql = SELECT FROM `dede_arctype` WHERE id= $ID ; $query = mysql_query ( $sql ) ; $row = mysql_fe […]



我们使用DedeCMS织梦开发网站时,经常会碰到需要调用当前顶级栏目名称,而织梦默认{dede:field name='typename' /} 只可以获取当前栏目的名称,而不是当前栏目顶级栏目名称。

方法一

  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]"; $ID="$row[id]"; 
  5. if($relID == 0) {@me = $row[typename];}
  6. else{$sql = "SELECT `typename` FROM `dede_arctype` WHERE id=$ID";
  7. $query = mysql_query($sql);$row=mysql_fetch_array($query); 
  8. @me = $row[typename];}{/dede:field.typeid}

方法二(推荐)

修改 clude/helpers/extend.helper.php 结尾增加

  1. /
  2.  获取一个类目的顶级栏目
  3.  @param strg $tid 栏目 ID
  4.  @return strg
  5. /
  6. if ( ! function_exists('gettype'))
  7. {
  8. function gettype($tid,$action)
  9. {
  10. global $dsql,$cfg_Cs;
  11. if(!is_array($cfg_Cs))
  12. {
  13. require_once(DEDEDATA."/cache/c_catalog_base.c");
  14. }
  15. if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0)
  16. {
  17. $id = $tid;
  18. }
  19. else
  20. {
  21. $id = GetTopid($cfg_Cs[$tid][0]);
  22. }
  23. $row = $dsql->GetOne("SELECT  FROM `dede_arctype` WHERE id=$id");
  24. $typename = $row['typename'];
  25. $typeurl = $id;
  26. if($action=='id') return $id;
  27. if($action=='name') return $typename;
  28. if($action=='lk') return GetOneTypeUrlA($row);
  29. }
  30. }

织梦顶级栏目链接,名称及 id 调用代码:

  1. {dede:field.typeid function="gettype(@me,id)"/}   //id
  2. {dede:field.typeid function="gettype(@me,name)"/} //名称
  3. {dede:field.typeid function="gettype(@me,lk)"/} //链接

方法三(推荐)
打开clude/helpers/extend.helper.php,添加一个函数

  1. /
  2.        获取指定栏目id的顶级栏目的名称
  3.       @return     strg
  4.      /
  5.     if ( ! function_exists('getTopChannelName'))
  6.     {
  7.     function getTopChannelName($id) {
  8.        global $dsql;
  9.             $typefo = $dsql->GetOne("SELECT  FROM `dede_arctype` WHERE id='{$id}'");
  10.             if($typefo['reid']==0) return $typefo['typename'];
  11.             else return getTopChannelName($typefo['reid']);
  12.     }
  13.     }

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

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

附带获取顶级栏目的url,打开clude/helpers/extend.helper.php,添加一个函数

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

在列表页这么使用{dede:field name='id' function='getTopChannelUrl (@me)'/}

在内容页这么使用{dede:field name='typeid' function='getTopChannelUrl(@me)'/}


Copyright © 2016-2025 www.1681989.com 推火网 版权所有 Power by