当前位置:首页 > 行业动态 > 正文

如何在织梦DEDECMS中获取文章和栏目页的顶级栏目名称?

在织梦DEDECMS中,可以通过以下代码获取当前页面顶级栏目名称:,,“ php,{dede:field name='toptype(@me)' function='GetTopTypeName(@me)'/},“

在织梦DEDECMS系统中,获取当前页面顶级栏目名称是一个常见的需求,以下是两种实现方法:

1、方法一:通过include/common.func.php文件

打开include/common.func.php文件,并在文件最下方添加以下代码:

     //获取顶级栏目名
     function GetTopTypename($id){
         global $dsql;
         $row = $dsql>GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id");
         if ($row['topid'] == '0'){
             return $row['typename'];
         } else {
             $row1 = $dsql>GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]");
             return $row1['typename'];
         }
     }

在需要调用顶级栏目名称的地方使用以下代码:

     {dede:field name='typeid' function="GetTopTypename(@me)" /}

2、方法二:通过修改include/helpers/extend.helper.php文件

打开include/helpers/extend.helper.php文件,并在文件结尾处添加以下代码:

     /* 获取顶级栏目相关信息 * @access public * @param string $tid 栏目ID * @param string $field 栏目字段 * @return string */
     if ( ! function_exists('getToptype')){
         function getToptype($tid,$field){
             global $dsql,$cfg_Cs;
             if(!is_array($cfg_Cs)){
                 require_once(DEDEDATA."/cache/inc_catalog_base.inc");
             }
             if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0){
                 $topid = $tid;
             } else {
                 $topid = GetTopid($cfg_Cs[$tid][0]);
             }
             $row = $dsql>GetOne("SELECT * FROMdede_arctype WHERE id=$topid");
             if($field=='id') return $topid;
             if($field=='typename') return $row['typename']; //栏目名称
             if($field=='typeurl') return GetOneTypeUrlA($row); //栏目链接
             if($field=='typenamedir') return $row['typenamedir']; //栏目英文名称
             if($field=='seotitle') return $row['seotitle']; //栏目SEO标题
             if($field=='description') return $row['description']; //栏目描述
             if($field=='content') return $row['content']; //栏目内容
         }
     }

在需要调用顶级栏目名称的地方使用以下代码:

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

FAQs

1、如何在文章内容页中调用当前页面的顶级栏目名称?

在文章内容页中调用当前页面的顶级栏目名称,可以使用以下代码:

     {dede:field name='typeid' function="GetTopTypename(@me)" /}

或者,如果你使用的是extend.helper.php文件中的方法,可以使用:

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

2、如何获取顶级栏目的URL链接?

要获取顶级栏目的URL链接,可以使用extend.helper.php文件中定义的函数,并指定typeurl字段:

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

这将返回顶级栏目的URL链接。

| 方法编号 | 方法描述 | 代码示例 |

| :: | :: | :: |

| 1 | 使用DEDECMS内置函数get_topcat() 获取顶级栏目ID,然后通过栏目ID获取栏目名称 | “`php

$category = get_topcat();

$top_cat_name = $category[‘catname’];

“` |

| 2 | 通过栏目页URL获取顶级栏目ID,然后通过栏目ID获取栏目名称 | “`php

// 假设栏目页URL为 http://www.example.com/column/123/

$cat_id = substr(basename($_SERVER[‘REQUEST_URI’]), 1);

$category = $dsql>GetOne("SELECT catname FROM#@__arctype WHERE id = ‘$cat_id’");

$top_cat_name = $category[‘catname’];

“` |

| 3 | 使用DEDECMS模板标签{dede:field name='typeid' /} 获取当前文章所属栏目ID,然后通过栏目ID获取栏目名称 | “`php

// 假设当前文章所属栏目ID为 123

$cat_id = $typeid;

$category = $dsql>GetOne("SELECT catname FROM#@__arctype WHERE id = ‘$cat_id’");

$top_cat_name = $category[‘catname’];

“` |

| 4 | 使用DEDECMS模板标签{dede:field name='typename' /} 获取当前文章所属栏目名称,然后根据栏目名称获取顶级栏目名称 | “`php

// 假设当前文章所属栏目名称为 "新闻"

$top_cat_name = $dsql>GetOne("SELECT catname FROM#@__arctype WHERE typename = ‘新闻’ AND is_top = 1")[‘catname’];

“` |

0