织梦获取一级栏目与当前栏目与上级父栏目的实现方法

时间:2021-11-24
类别:教程 - CMS教程

前端很多时候需要直接获取一个栏目的相关信息,获取在某个页面上获取顶级或者上一级栏目的相关信息,这样我们可以自己写个自定义方法来实现。

打开 /include/extend.func.php 在最下面添加:

  1. /** 
  2.  *  获取顶级栏目相关信息 
  3.  * 
  4.  * @access    public 
  5.  * @param     string  $tid      栏目id 
  6.  * @param     string  $field    栏目字段 
  7.  * @return    string 
  8.  */ 
  9. if ( ! function_exists('getToptype')) 
  10.     function getToptype($tid,$field
  11.     { 
  12.         global $dsql,$cfg_Cs
  13.         if(!is_array($cfg_Cs)) 
  14.         { 
  15.             require_once(DEDEDATA."/cache/inc_catalog_base.inc"); 
  16.         } 
  17.         if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0) 
  18.         { 
  19.             $topid = $tid
  20.         } 
  21.         else 
  22.         { 
  23.             $topid = GetTopid($cfg_Cs[$tid][0]); 
  24.         } 
  25.         $row = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id=$topid"); 
  26.         if($field=='id'return $topid
  27.         if($field=='typeurl' || $field=='typelink'return GetOneTypeUrlA($row); 
  28.         return $row[$field]; 
  29.     } 
  30. /** 
  31.  *  获取当前栏目相关信息 
  32.  * 
  33.  * @access    public 
  34.  * @param     string  $tid      栏目id 
  35.  * @param     string  $field    栏目字段 
  36.  * @return    string 
  37.  */ 
  38. if ( ! function_exists('getCurtype')) 
  39.     function getCurtype($tid,$field
  40.     { 
  41.         global $dsql
  42.         $row = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id=$tid"); 
  43.         if($field=='id'return $tid
  44.         if($field=='typeurl' || $field=='typelink'return GetOneTypeUrlA($row); 
  45.         return $row[$field]; 
  46.     } 
  47. /** 
  48.  *  获取上级栏目相关信息 
  49.  * 
  50.  * @access    public 
  51.  * @param     string  $tid      栏目id 
  52.  * @param     string  $field    栏目字段 
  53.  * @return    string 
  54.  */ 
  55. if ( ! function_exists('getRetype')) 
  56.     function getRetype($tid,$field
  57.     { 
  58.         global $dsql
  59.         $typeid = $tid
  60.         $query = "SELECT reid FROM `dede_arctype` where id = $typeid"
  61.         $rs = $dsql->GetOne($query); 
  62.         $reid = $rs['reid'];  
  63.         $query2 = "SELECT * FROM `dede_arctype` where id = $reid"
  64.         $row = $dsql->GetOne($query2); 
  65.         if($field=='id'return $tid
  66.         if($field=='typeurl' || $field=='typelink'return GetOneTypeUrlA($row); 
  67.         return $row[$field]; 
  68.     } 

模板里调用标签写法,需要哪个字段,就对应的填上字段名即可

织梦栏目列表与文章页获取顶级栏目名称相关信息,标签写法如下:

  1. {dede:field.typeid function=getToptype(@me,typename)/} 

织梦栏目列表与文章页获取当前栏目相关信息,标签写法如下:

  1. {dede:field.typeid function=getCurtype(@me,typename)/} 

织梦栏目列表与文章页获取上级父栏目相关信息,标签写法如下:

  1. {dede:field.typeid function=getRetype(@me,typename)/} 

不喜欢添加自定义方法的同学可以试试以下这种方法,也可以在织梦的栏目列表与文章页获取到:

  1. {dede:field.typeid runphp=yes}global $dsql;$row = $dsql->GetOne("SELECT * FROM dede_arctype WHERE id=@me");$reid = "$row[reid]"$topid = "$row[topid]";if($reid == 0) @me = $row[content];else $row = $dsql->GetOne("SELECT * FROM dede_arctype WHERE id=$topid");@me = $row[content];{/dede:field.typeid} 

获取顶级的是topid,获取上级的是reid。

    收藏