找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2003|回复: 0

[分享] 织梦调用当前顶级栏目名称、ID、url方法

[复制链接]
发表于 2018-7-30 11:02:41 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
我们在用织梦做网站时,经常会碰到需要调用当前顶级栏目名称,而织梦默认{dede:field name='typename' /} 只可以获取当前栏目页上一级栏目的名称,而不是当前栏目顶级栏目名称。


在include/common.func.php的底部加入:

  1. //获取顶级栏目名
  2. function GetTopTypename($id)
  3. {
  4.     global $dsql;
  5.     $row = $dsql->GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id");
  6.     if ($row['topid'] == '0')
  7.     {
  8.         return $row['typename'];
  9.     }
  10.     else
  11.     {
  12.         $row1 = $dsql->GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]");
  13.         return $row1['typename'];
  14.     }
  15. }
复制代码

备注:若顶级栏目没有绑定二级域名,所调用的字段应该是 sitepath 故代码应如下所示:

  1. //获取顶级栏目url
  2. function GetTopTypeurl($id)
  3. {
  4.     global $dsql;
  5.     $row = $dsql->GetOne("SELECT sitepath,topid FROM dede_arctype WHERE id= $id");
  6.     if ($row['topid'] == '0')
  7.     {
  8.         return $row['sitepath'];
  9.     }
  10.     else
  11.     {
  12.         $row1 = $dsql->GetOne("SELECT sitepath FROM dede_arctype WHERE id= $row[topid]");
  13.         return $row1['sitepath'];
  14.     }
  15. }
复制代码

顶级栏目其他字段调用的function 函数仿照上面所示书写即可。



同理可得获取顶级栏目url方法 (当顶级栏目绑定二级域名时调用的字段为“ siturl”)

  1. function GetTopTypeurl($id)
  2. {
  3.     global $dsql;
  4.     $row = $dsql->GetOne("SELECT siteurl,topid FROM dede_arctype WHERE id= $id");
  5.     if ($row['topid'] == '0')
  6.     {
  7.         return $row['siteurl'];
  8.     }
  9.     else
  10.     {
  11.         $row1 = $dsql->GetOne("SELECT siteurl FROM dede_arctype WHERE id= $row[topid]");
  12.         return $row1['siteurl'];
  13.     }
  14. }
复制代码



在文章页或者栏目列表页调用时,在所要调用栏目名称的位置加上下面这行代码即可实现。

{dede:field name='typeid' function="GetTopTypename(@me)" /}    顶级栏目名

{dede:field name='typeid' function="GetTopTypeurl(@me)" /}     顶级栏目url



dede调用顶级栏目ID 方法一:

{dede:field.typeid function="GetTopid(@me)"/} 聚模板首推这一方法,经过测试是可行的。



dede调用顶级栏目ID 方法二:

1、在所需要调用顶级栏目ID的地方,添加这段标签语法

  1. {dede:type}[feild:topid/]{/dede:type}
复制代码




2、修改源文件,找到include目录下的taglib目录下的type.lib.php。

找到这条语句


  1. $row = $dsql->GetOne(“Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
  2. From `dede_arctype` where id=’$typeid’ “);
复制代码

修改成为


  1. $row = $dsql->GetOne(“Select id,topid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
  2. From `dede_arctype` where id=’$typeid’ “);
复制代码

在if(!is_array($row)) return ”;下一行添加


  1. if( $row['topid']==0){$row['topid']=$row['id'];}
复制代码

这样,这条语句在顶级栏目还是子栏目,都可以调用了

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-27 04:32 , Processed in 0.057461 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表