DedeCMS织梦

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

也想出现在这里?联系我们
创客云

我们使用 DedeCMS 织梦开发网站时,经常会碰到需要调用当前顶级栏目名称,而织梦默认{dede:field name='typename' /} 只可以获取当前栏目的名称,而不是当前栏目顶级栏目名称。

方法一:

  1. {dede:field.typeid runphp='yes'}
  2. $ID = @me; $sql = "SELECT * FROM `dede_arctype` WHERE id=$ID";
  3. $query = mysql_query($sql);$row=mysql_fetch_array($query); 
  4. $relID = "$row[reid]"; $topID="$row[topid]"; 
  5. if($relID == 0) {@me = $row[typename];}
  6. else{$sql = "SELECT `typename` FROM `dede_arctype` WHERE id=$topID";
  7. $query = mysql_query($sql);$row=mysql_fetch_array($query); 
  8. @me = $row[typename];}{/dede:field.typeid}
也想出现在这里?联系我们
创客主机

方法二(推荐):

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

  1. /**
  2. * 获取一个类目的顶级栏目
  3. * @param string $tid 栏目 ID
  4. * @return string
  5. */
  6. if ( ! function_exists('gettoptype'))
  7. {
  8. function gettoptype($tid,$action)
  9. {
  10. global $dsql,$cfg_Cs;
  11. if(!is_array($cfg_Cs))
  12. {
  13. require_once(DEDEDATA."/cache/inc_catalog_base.inc");
  14. }
  15. if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0)
  16. {
  17. $topid = $tid;
  18. }
  19. else
  20. {
  21. $topid = GetTopid($cfg_Cs[$tid][0]);
  22. }
  23. $row = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id=$topid");
  24. $toptypename = $row['typename'];
  25. $toptypeurl = $topid;
  26. if($action=='id') return $topid;
  27. if($action=='name') return $toptypename;
  28. if($action=='link') return GetOneTypeUrlA($row);
  29. }
  30. }
也想出现在这里?联系我们
创客主机

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

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

方法三(推荐):
打开 include/helpers/extend.helper.php,添加一个函数:

  1. /**
  2.      *  获取指定栏目id的顶级栏目的名称
  3.      * @return     string
  4.      */
  5.     if ( ! function_exists('getTopChannelName'))
  6.     {
  7.     function getTopChannelName($id) {
  8.        global $dsql;
  9.             $typeinfo = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id='{$id}'");
  10.             if($typeinfo['reid']==0) return $typeinfo['typename'];
  11.             else return getTopChannelName($typeinfo['reid']);
  12.     }
  13.     }

在列表页这么使用:{dede:field name='id' function='getTopChannelName(@me)'/}

在内容页这么使用:{dede:field name='typeid' function='getTopChannelName(@me)'/}

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

  1.  /**
  2.      *  获取指定栏目id的顶级栏目的url
  3.      * @return     string
  4.      */
  5.     if ( ! function_exists('getTopChannelUrl'))
  6.     {
  7.     function getTopChannelUrl($id) {
  8.        global $dsql;
  9.             $typeinfo = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id='{$id}'");
  10.             if($typeinfo['reid']==0) return GetOneTypeUrlA($typeinfo);
  11.             else return getTopChannelUrl($typeinfo['reid']);
  12.     }
  13.     }

在列表页这么使用:{dede:field name='id' function='getTopChannelUrl (@me)'/}

在内容页这么使用:{dede:field name='typeid' function='getTopChannelUrl(@me)'/}

服务范围 1、专业提供WordPress主题、插件汉化、优化、PHP环境配置等服务请详询在线客服
2、本站承接 WordPress、DedeCMS、ThinkPHP 等系统建站、仿站、开发、定制等服务
3、英文模板(主题)安装费用为120元/次,汉化主题首次免费安装(二次安装30元/次)
售后时间 周一至周五(法定节假日除外) 10:00-22:00
免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 2107117185@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!
(0)

本文由 云模板 作者:PetitQ 发表,转载请注明来源!

也想出现在这里?联系我们
创客主机

热评文章

发表评论

精彩推荐

Medizin - 医疗器械医护用品外贸商店WooCommerce汉化主题

Envato Affiliates

本站承接 WordPress / DedeCMS / ThinkPHP 等
系统建站、仿站、开发、定制等业务!

嘿,售后咨询!