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’];
“` |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1212369.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复