求分析生成文章分页的问题
发布于:2022-01-17 09:50:54
#1 sghwcw
折腾一晚上了,搜索论坛,好像也很少人讨论这个,我打算用百度编辑器里的分页标记,结合论坛里上海滩朋友提供的分页函数,动态分页调试成功,但是把文章分页生成静态出现了问题,有的页面静态分页链接正确,有的是错的,弄了一晚上未果.
下面是代码,麻烦jake有空给看看,这样的静态该怎么生成.谢谢
public function html(){
echo "开始生成留言本内容页面...";
$pinyin=spClass("spPinyin"); //拼音类
$urls = array();
$db = spClass("lib_topic");
if( $db = $db->spLinker()->findAll() ){ // 获取到全部的留言来进行spUrl的构造
foreach($db as $value){ // 循环
$p=count(explode('_baidu_page_break_tag_',$value['nrgl']['content'])); //获取分页数量
for($i=1;$i<=$p;$i++){
$urls[] = array(array('topic','view',array('id'=>$value['id'],'p'=>$i)),$pinyin->Pinyin($value['lmgl']['name'])."/".$pinyin->Pinyin($value['title'])."_".$i.".html");
}
spClass('spHtml')->makeAll($urls); // 使用makeAll来制作
$urls=array();
}
}
echo "留言本内容页面生成完毕!";
}
2012-09-11 13:05:37
#2 jake
我也是搜索论坛的哦,结果非常多,都可以作为参考,基本可以确定是:
注意 array('id'=>$value['id'],'p'=>$i) 这两个变量值的类型。
2012-09-11 13:12:44
#3 sghwcw
jake 发表于 2012-9-11 13:12
我也是搜索论坛的哦,结果非常多,都可以作为参考,基本可以确定是:
注意 array('id'=>$value['id'],'p'= ...
谢谢,这个方面昨晚我已经折腾过啦.
我看了规律,我觉得是检测文件存不存在这儿有点问题
比如:一共有六页
点第一页的地址( xxx_1.html ),鼠标移到分页那,第二页到第六页都是动态地址!
点第二页的地址( index.php?c=topic&a=view&id=5&p=2 ),鼠标移到分页那,分页地址正常,全部返回的是静态地址.
点第三页的地址( xxx_3.html ),鼠标移到分页那,第一第二页返回静态地址,第四页到第六页都是动态地址!
.
.
.
从上面的规律来看,和循环生成的规律来看,是不是因为生成第一页的时候其它页面检测的结果,肯定不存在,所以返回的是动态地址.
生成第二页的时候第一页存在,所以返回静态地址,后面的没有生成,仍然返回动态地址呢?
2012-09-11 14:33:41
#4 jake
不是,sphtml没有检测文件的机制。
搜索论坛得出的结果也说了:
spHtml是根据前面生成的地址(不管有没有生成,都会把动态和静态的地址对应写到临时文件中)读取然后在页面上给出地址的。这是spUrl的功能,和生成静态没关。
也就是说,如果A页面地址有设置到spHtml的make或者makeAll里面(不管有没有生成),那么在网站任何地方,包括静态和动态的页面,用spUrl来显示A页面的地址,都会是静态的。
而且spHtml的两次检查的机制,在某个帖子里面也说明了。
最好还是按搜索论坛的结果说的参数对应来做吧。
建议好好看看搜索论坛的结果!想当然是没有意义的!
2012-09-11 14:38:30
#5 小双
这段代码改下,可以在循环里面生成单页面:
......
foreach($db as $value){ // 循环
$p=count(explode('_baidu_page_break_tag_',$value['nrgl']['content'])); //获取分页数量
for($i=1;$i<=$p+1;$i++){ spClass('spHtml')->make(array('topic','view',array('id'=>$value['id'],'p'=>$i)),$pinyin->Pinyin($value['lmgl']['name'])."/".$pinyin->Pinyin($value['title'])."_".$i.".html");
}
......
可以参考下我的站
http://www.aift.cn/article/pages_1.html,我之前没注意分页生成静态,今天看到自己加上去了,把自己的想法贴出来。
2012-09-11 15:42:54
#6 小双
spClass('spHtml')->makeAll($urls); // 使用makeAll来制作
$urls=array();
这些就不需要了
2012-09-11 15:47:30
#7 sghwcw
多谢jake和小双的回答,我一会再鼓捣下看看
2012-09-11 18:41:51
#8 zhgzzy
长文章分页函数:
spAddViewFunction('fp','fp');
/**
* 文章分页
*/
function fp($params)
{
$arid = $params['a'];
$p = $params['p'];
$contents = $params['c'];
$arr1 = explode('
',$contents); //数组长度&总页数
$arr2 = explode('
',$contents); //数组长度&总页数
if ($arr1 < $arr2){
$arr = $arr2;
}else{
$arr = $arr1;
}
$total = count($arr); //当前页
$nowpage = $p?$p:1; //上页
$pdiv = '
';
//$pdiv .= "
总{$nowpage}/{$total}页";
for($i = 1; $i<=$total; $i++)
{
$url = spUrl(main,view,array('id'=>$arid,'p'=>$i));
if ($i==$nowpage){
$pdiv .= "
{$i}";
} else {
$pdiv .= "
{$i}";
}
}
$pdiv .= '
'; //输出内容
echo $arr[$nowpage-1]; //不分页则不显示分页列表
if( $total <=1) $pdiv = ''; //输出分页列表
echo $pdiv;
}
模板调用:
<{fp a=$results.id p=$p c=$results.content}>
2012-09-13 11:14:00
#9 zhgzzy
{:soso_e113:} 我也是从speedphp开始学php的,代码可能不是很好,高手可以自己优化一下,当然优化后还请分享一下!!!
2012-09-13 11:25:51