微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DedeCMS织梦栏目页/文章详情页获取顶级栏目名称及链接url方法

我们使用 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_fetch_array($query);
$relID = $row[reid]; $topID=$row[topid];
if($relID == 0) {@me = $row[typename];}
else{$sql = SELECT `typename` FROM `dede_arctype` WHERE id=$topID;
$query = MysqL_query($sql);$row=MysqL_fetch_array($query);
@me = $row[typename];}{/dede:field.typeid}

方法二(推荐):

修改 include/helpers/extend.helper.PHP 结尾增加

/**
* 获取一个类目的顶级栏目
* @param string $tid 栏目 ID
* @return string
*/
if ( ! function_exists('gettoptype'))
{
function gettoptype($tid,$action)
{
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);
$toptypename = $row['typename'];
$toptypeurl = $topid;
if($action=='id') return $topid;
if($action=='name') return $toptypename;
if($action=='link') return GetoneTypeUrlA($row);
}
}

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

{dede:field.typeid function=gettoptype(@me,id)/}   //id
{dede:field.typeid function=gettoptype(@me,name)/} //名称
{dede:field.typeid function=gettoptype(@me,link)/} //链接

方法三(推荐):

打开 include/helpers/extend.helper.PHP添加一个函数

/**
     *  获取指定栏目id的顶级栏目的名称
     * @return     string
     */
if ( ! function_exists('getTopChannelName'))
{
function getTopChannelName($id) {
global $dsql;
$typeinfo = $dsql->Getone(SELECT * FROM `dede_arctype` WHERE id='{$id}');
if($typeinfo['reid']==0) return $typeinfo['typename'];
else return getTopChannelName($typeinfo['reid']);
}
}

列表页这么使用:

{dede:field name='id' function='getTopChannelName(@me)'/}

内容页这么使用:

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

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

/**
     *  获取指定栏目id的顶级栏目的url
     * @return     string
     */
if ( ! function_exists('getTopChannelUrl'))
{
function getTopChannelUrl($id) {
global $dsql;
$typeinfo = $dsql->Getone(SELECT * FROM `dede_arctype` WHERE id='{$id}');
if($typeinfo['reid']==0) return GetoneTypeUrlA($typeinfo);
else return getTopChannelUrl($typeinfo['reid']);
}
}

列表页这么使用:

{dede:field name='id' function='getTopChannelUrl (@me)'/}

内容页这么使用:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐