• 售前

  • 售后

热门帖子
入门百科

详解织梦调用当前顶级栏目名称、ID、url方法

[复制链接]
乔微博 显示全部楼层 发表于 2021-8-19 17:45:01 |阅读模式 打印 上一主题 下一主题
我们在用织梦模板做网站时,常常会碰到需要调用当前顶级栏目名称,而织梦默认{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. }
复制代码
在文章页大概栏目列表页调用时,在所要调用栏目名称的位置加上下面这行代码即可实现。
  1. {dede:field name='typeid' function="GetTopTypename(@me)" /}    顶级栏目名
  2. {dede:field name='typeid' function="GetTopTypeurl(@me)" /}     顶级栏目url
复制代码
dede调用顶级栏目ID 方法一:
{dede:field.typeid function="GetTopid(@me)"/}  dedeyuan首推这一方法,颠末测试是可行的。
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'];}
复制代码
如许,这条语句在顶级栏目还是子栏目,都可以调用了
以上就是本文的全部内容,盼望对各人的学习有所帮助,也盼望各人多多支持草根技能分享。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作