#1 phpfans
今天熟悉speedphp的生成静态,主要是生成首页、栏目分页列表、内容页,基本的生成现在没有问题,生成后内容地址也会变为生成后的静态地址,但是栏目导航的地址并没有变成静态地址
栏目导航模板代码
<{foreach from=$nav item=menu}>
<{$menu.class_name}> <{/foreach}>
难道导航需要在模板中手工写成静态地址吗?如:
<{foreach from=$nav item=menu}>
<{$menu.class_name}> <{/foreach}>
2011-10-12 13:23:17
#2 jake
导航链接有配置到rewrite里面去了吗?不配置是用不了的。
2011-10-12 13:27:38
#3 phpfans
配置到rewrite?我是生成真静态,也需要配置rewrite吗?
我的入口文件配置
// HTML生成配置
'html' => array(
'enabled' => TRUE,
'safe_check_file_exists' => TRUE,
'file_root_name' => '',
),
2011-10-12 13:45:52
#4 jake
哦,搞错了,
生成真实静态文件的话,也需要先生成导航的页面,这样在其他页面生成的时候会用到这些地址。
如果发现无法生成,检查一下传入的参数是否一致——这很重要。
2011-10-12 14:07:43
#5 phpfans
呵呵,还是没太明白,为了便于说明,贴一下我的代码
1、文章分页列表
public function pagelist(){
if($classid = $this->spArgs("classid")){
//这里是网站栏目导航
$this->nav = spClass("lib_class")->findAll("","id DESC","id,class_name","8");
//文章分页列表
$this->artlist = spClass("lib_news")->spPager($this->spArgs('page', 1), 2)->findAll(array('classid'=>$classid));
//分页
$this->pager = spClass("lib_news")->spPager()->getPager();
//最新文章
$this->newlist = spClass("lib_news")->findAll(array( 'classid' => '1' ),"id DESC","id,title","5");
$this->classid = $classid;
}else{
$this->error("栏目ID不能为空!", spUrl("main","index"));
}
}
2、生成分页列表部分
function list_html(){
header("Content-type: text/html; charset=utf-8");
echo "开始生成列表页面...
";
$count = spClass('lib_news')->findCount('classid'=>'1');
$urls = array();
for($i = 1;$i <= ceil($count/2);$i++)
{
$urls[] = array(
array('news','nlist',array('classid'=>'1','page'=>(int)$i)), '/html/page_'.(int)$i.'.html' );
}
spClass('spHtml')->makeAll($urls);
echo "列表生成完毕!";
}
3、模板部分
<{foreach from=$nav item=menu}>
<{$menu.class_name}> <{/foreach}>
现在的问题就是生成静态后导航地址没有变为静态页面的地址,你说的先生成导航地址我没太理解,因为导航部分我是直接包含在分页列表的方法中的,而不是单独定义的一个方法。
2011-10-12 14:44:21
#6 jake
简单来说,如果你要A页面的地址是静态地址,那么就要生成A页面成静态HTML文件。
同理,导航地址你要是静态地址,那么就要先用spHtml生成导航页面的HTML文件。
你上面只写了列表和内容页,导航页没看到有生成的。
2011-10-12 15:30:50
#7 phpfans
呵呵,晕了
我的导航是直接写在方法里传给模板的
$this->nav = spClass("lib_class")->findAll("","id DESC","id,class_name","8");
这样的怎么生成呢?
2011-10-12 16:57:10
#8 jake
呵呵,晕了
我的导航是直接写在方法里传给模板的
$this->nav = spClass("lib_class")->findAll("","id DESC ...
phpfans 发表于 2011-10-12 16:57 
难道你的导航不是一个个的链接?
是链接的话,总会链接到一个页面吧。比如说
我是导航这就是链接,它链接到
http://www.speedphp.com这个页面。
我的意思是:链接到的那个页面如果已经生成静态HTML的话,那么这个链接就是静态的链接。
2011-10-12 17:14:47
#9 phpfans
呵呵,可能是我表达的不够清楚,
这个栏目导航
$this->nav = spClass("lib_class")->findAll("","id DESC","id,class_name","8");
对应的模板代码是
<{foreach from=$nav item=menu}>
<{$menu.class_name}> <{/foreach}>
上面的在动态情况下访问是正常的,对应的URL是
测试栏目1可以正常显示栏目的分页文章。
但是生成静态时
array('news','nlist',array('classid'=>'1','page'=>(int)$i)),
'/html/page_'.(int)$i.'.html' );
我是将栏目分页生成为/html/page_1.html,/html/page_2.html 这种形式,
但是导航还是
测试栏目1这种URL,没有变为
测试栏目1呵呵,不知道这回有没有说明白,谢谢jake的耐心解答
2011-10-12 18:12:45
#10 jake
没看到这些页面有生成:<{spUrl c=news a=pagelist classid=$menu.id}>
2011-10-12 18:36:01
#11 phpfans
呵呵,虽然没弄明白,但是还是非常感谢,我没理解你说的<{spUrl c=news a=pagelist classid=$menu.id}>应该怎么去生成,请jake有时间时做一个按栏目生成的例子吧。
2011-10-12 19:28:59