请问speedphp如何实现通用的网站导航?
发布于:2022-01-17 09:50:54
#1 phpfans
呵呵,又来请教了,我想实现通用的网站导航,但是卡壳了,先说下我的实现步骤:
1.建立分类表class
2.main.php 中建立public function nav(){---}读取分类数据,测试 index.php?c=main&a=nav 分类数据已经成功获取。
3.在需要调用分类的页面模板中使用<{include file="main_nav.html"}>来获取分类数据,但是测试失败。
请问我的思路是否正确,是否有更好的实现方式?谢谢
2011-10-06 17:36:58
#2 jake
思路有些不正确了,<{include file="main_nav.html"}>这是模板的包含语法,而index.php?c=main&a=nav是一个浏览器使用的URL。两者不能等同。
这里介绍个简单的方法。
index.php?c=main&a=nav 这个action可以显示导航的HTML,那么尝试使用display的第二个参数。
原来如果是
$this->display('main_nav.html');
那么就改成
return $this->display('main_nav.html', true);
这样在另一个页面的action中,可以
$this->pagenav = $this->nav(); // 都在main这个控制器下的话
在模板里面就
<{$pagenav}>
即可显示由main/nav产生的导航HTML
2011-10-07 16:55:44
#3 phpfans
谢谢jake,在看到你的回复前,我又测试了一下在action 中加入 $this->navlists = spClass("lib_class")->findAll(); ,然后再模板中<{foreach from=$navlists item=navlist}>的方式来实现,虽然没有实现通用的目的,但是可以取到栏目信息了。.
你提供的方式会更简洁一些,不过我有个想法,在制作网站的过程中,有很多版块都是要重复出现的。比如导航栏,最新文章,热点文章,推荐文章等,我以前的做法是定义一个类,然后写一个方法,比如 artlist(栏目ID,文章属性,排序方式),然后在页面中artlist(1,1,1),改变参数即可实现获取最新、热点、推荐等文章的通用方式。我个人觉得挺方便的,因为只要定义一次,就可以很多地方通用了,当然,这里不能排除个人的习惯因素,我对SpeedPHP熟悉的还不够,也许本身就已经可以实现我说的方式。
呵呵,罗嗦了一大堆,实际上就一句话,对于有共性的版块,可以实现方便的通用。
2011-10-08 12:19:31
#4 jake
你说的方法,其实在MVC架构的SP里面,实现起来也很简单,就是建立一个新的controller(继承与spController),然后其他的controller再继承于这个新的controller,那么这个controller的全部方法都是“公用”的了。
具体可以搜索一下论坛,我曾经发有此类的代码例子。
2011-10-08 20:14:02
#5 phpfans
没有搜到例子,不过你说的我懂了,谢谢jake
2011-10-08 23:02:17