织梦获得某类目的链接列表函数LogicGetPosition($id,$islink)详解
其实,当前位置函数是由这个函数功能实现的,而这个函数又是由下面这个函数实现的:
获得某个类目的超链接信息函数:GetOneTypeLink($typeinfos),而这个函数功能又是由下面这个函数实现的:
获得某分类连接的URL函数: GetOneTypeUrl($typeinfos),而这个函数功能又是由下面这个函数实现的:
获取栏目url函数:GetTypeUrl(参数),而这个函数功能又是由下面这个函数实现的:
最终我们查找到了函数GetTypeUrl(参数),关于这个函数我们已经分析过了,这里不用多说,所以,要想把LogicGetPosition($id,$islink)弄明白,只需要把除了这里面的代码弄明白外,还要把另外二个函数弄明白,那么,这个函数就明白了,不要看这个函数这么麻烦,其实,这个函数比较简单的。就是里面的递归看上去不好理解,关于php的递归知识织梦基地已经在论坛里,单独作了一个教程,教程里面讲的非常详细了。
既然,这个函数里面用到了三个函数,那么,我们就从内向外,研究函数,第三个织梦基地已经分析过了,就从第二个函数GetOneTypeUrl($typeinfos)开始分析,这个函数的作用是获取栏目url,这个函数也是比较简单的,就是判断常量“DEDEMOB”是否存在,若存在则返回list.php?tid='.$typeinfos['id']连接,其中$typeinfos是栏目连接,根据id传来的值从数据库表,查询出来的数组。
如果没有设置这个常量,则返回由函数GetTypeUrl(参数)生成的栏目url。
第一个函数:
function GetOneTypeLink($typeinfos) { $typepage = $this->GetOneTypeUrl($typeinfos); $typelink = "<a href='".$typepage."'>".$typeinfos['typename']."</a>"; return $typelink; }
获取栏目url,然后,组装完整的url连接:$typelink,这个也比较简单,就是把第二个函数返回的类似:http://www.xxx.com/forum-41-1.html 的链接,放到a标签里面,组成一个越链接。
把这些弄明白了,再回到本教程的函数代码里面。
前二行是查询栏目表#@__arctype,条件是根据参数$id来取出表中的字段。
然后,判断一下$islink是真还是假,若是真,则把链接赋给$this->valuePosition;否则,就是想获得栏目名。
这里通过$tinfos['reid']是的值是否大于零,也就是当前栏目为子栏目,进行递归遍历。