11

07-2012

织梦真的是一个很棒的建站工具,其实与其说是建站工具不如说是个很好的内容管理系统更为合适。最近在做织梦的开发的时候遇到了这样的情况,就是想要栏目页和栏目的文章页显示对应的热词搜索,其实,我想了想,不就是和给织梦的当前页加样式一样吗。很多人在做织梦的开发的时候,有的时候建的栏目特别的多,而且也有特别多的子栏目。比如,导航中有新闻动态、专家团队,新闻动态下有子栏目企业动态。如何实现点新闻动态,还是企业动态,还是他们下面所属的文章的时候默认的当前页都是新闻动态。下面就说说具体实现。

第一种方法

其实有的时候,我们为了方便,其实可以让有关系的栏目公用一套模板,而其他的公用一套模板。这也是织梦的强大之处。在栏目的高级选项中,其实我们可以对每个栏目指定单独的模板

这样,就可以实现这个栏目的页面自己随便定义了。当然也包括样式。其实就这个方法可以做很多的功能了。

第二种方法。

但是很多人其实并不喜欢第一种方式,觉得这样很笨,因为所有的模板几乎都是大部分一样的,只有几个小地方又区别,这样太麻烦,就像要实现的功能,就是导航的当前页不同而已。所以这里有个用php实现的方法。

我们要考虑一下原理,所有的当前页一样的页面的共同点是什么,对了,那就是他的顶级的typeid是一样的,我们指定,用{dede:field.typeid/}是可以获得当前页面的typeid的。这个就是栏目的id。栏目因为有从属关系,所以所有的子栏目和下面的文章的顶级typeid是一样的。那么我们就可以根据这个typeid来判断当前是哪个页面了。

因为模板中不能直接的使用php,所以我们使用标签的runphp功能。

虽然可以使用php了,但是不能定义函数,所以我们用for循环,给他一个死循环,直到查到顶级id就结束。

{dede:field.typeid runphp=’yes’}

$tid = @me;

if(!empty($tid)){

for(;;){

//dede_arctype是表名,你要知道你的表的名字,不知道可以查看data/common.inc.php

$sql = “select topid from dede_arctype where id=$tid”;

$query=mysql_query($sql);

$rs = mysql_fetch_array($query);

if(’0′==$rs['topid']){

$id = $tid;

break;

}else{

$tid = $rs['topid'];

}

}

}else{

$id = ‘no’;

}

//将这个方法定义在公共部分。

//这样最后的这个id就是顶级栏目的id了。有了这个id.就好办了。我们可以将这个值放在一个隐藏域中,给导航取id或class为以栏目id为基础的。这样用js获取这个隐含值,就可以知道给哪个栏目加样式等等了。

{/dede:field.typeid}

这个看着很智能,其实也有很大的弊端,毕竟这样比较浪费资源,尤其是如果每个文章页也都这么操作,的确是有点得不偿失了。所以,根据实际情况吧,当然也有很多其他的办法,但是,我觉得这个办法也是比较智能的。

程序本天成,妙手偶得之!我们只是代码的搬运工!

转载请注明:http://www.521php.com/archives/217/

发表评论

昵称:

网址:

eg.博客主题调用的是Gravatar头像,你可以通过邮箱注册获得头像.
/ 快捷键:Ctrl+Enter