首页 > CMS > 织梦DEDE > 正文

DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法

2024-07-12 09:05:49
字体:
来源:转载
供稿:网友

织梦DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法

在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:field name='typename' /} 可以获取当前栏目页上一级栏目的名称,而不是当前栏目顶级栏目名称。

下面拓展出一个方法来实现这个效果:

方法一:

在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)" /}

在文章页中用下面这个方法来调用

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


方法二:

修改 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 * FROM `dede_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)"/}  //栏目名称


{dede:field.typeid function="gettoptype(@me,typeurl)"/}   //栏目链接

一次类推,怎么写可以观察php上面的定义!
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表