织梦(dedecms)子栏目和内容页调用顶级栏目ID(topid)的方法总结。
使用织梦顶级栏目id可以实现很多功能比如:在每个列表页调用不同的栏目图片(同一顶级栏目调用相同的图片),当我们建立多个栏目的时候,如果采用一般的 方法,就意味着要做多个栏目列表页模板,这对在模板制作和后期维护上会照成相当大的麻烦,显示这种方法是不可取的。那么我们怎样来更快更简单的处理这个问 题呢,具体的思路是这样的:调用顶级栏目ID,然后将图片的命名规则改为(xxx+id.jpg)的模式,如:img1.jpg 、img2.jpg即为imgID.jpg这样我们只需要使用一个模板,制作几张图片就可以了,下面是具体的方法:
dede调用顶级栏目ID 方法一:
{dede:field.id function="GetTopid(@me)"/}
首推这一方法,织梦自带函数,而且不需要改动任何源码!
dede调用顶级栏目ID 方法二(相对麻烦,不建议使用):
首先,修改源文件,找到include目录下的taglib目录下的type.lib.php。
找到这条语句
$row = $dsql->GetOne(“Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `dede_arctype` where id=’$typeid’ “);
修改成为
$row = $dsql->GetOne(“Select id,topid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `dede_arctype` where id=’$typeid’ “);// 在数据查询的时候,增加查询topid的值。
在if(!is_array($row)) return '';下一行添加
if( $row['topid']==0){$row['topid']=$row['id'];} //当前栏目为顶级目录时,topid值为0,直接将当前顶级栏目的id值服务topid输出。
第二,在所需要调用顶级栏目ID的地方,添加这段标签语法:
{dede:type}[feild:topid/]{/dede:type}
这样,这条语句不论在顶级栏目还是子栏目甚至是文章页,都可以调用了相应的顶级栏目id了。