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