phpcmsphpcms2008的分页有时会出现莫名的错误,对html源代码的要求和分页符的位置要求较高,会造成不必要的分布错误,如把第一段作为标题。如把[page]和[page][/page]混排,还会造成导航的页码错误等。

分页符没有把<p></p>包含进去,也会造成每页html的代码开头为</p>,结尾为<p>。这些都是可以避免的,如tinymce编辑器把<p><!– pagebreak –></p>作为分页符,就是为了防止把段落标志p截断,而论坛上一些以<br />作为文章分段的解决,也是不符合标准。

分页的说明:

1、无标题时用<p>[page]</p>作为分页符;

2、用<p>[page]标题[/page]</p>作为标题分页符

敬告:修改之后的执行效率有下降,如果你的网站不用分页,切勿使用

phpcms2008修改分页后效果

phpcms2008修改分页后效果

主要的修改地方:

手头上没有流程绘制工具,就简单的说一下主要修改的地方。

1、$paginationtype==1自动生成时,把分页符替换,调用自动分页函数(不建议自动分页,因为自动分页的函数没有加<p></p>,可以自行加上,该函数在include\global.func.php,最后1384行修改为$data = implode(‘<p>[page]</p>’, $data););

2、$paginationtype==0不分页时,把分页符替换;

3、有分页符时且有标题分页符时,首页不是<p>[page]开头,则加上。由于编辑器的原因,首行开能是<p>&nbsp;</p>,所以要注意看源文件删除空行;

4、把<p>[page]</p>转换成<p>[page][/page]</p>

5、为符合规范,最后生成的文件开头为</p>时,要替换$content=substr_replace($content,””,0,4);

6、没有标题的分页为原标题+页码,防止把内容作为标题,也能规范标题

7、第一页如果没有标题则为原标题

附:1、修改的文件include\html.class.php下载

html.class.php下载

html.class.php下载

2、修改部分的源代码

//以下注释可删除,以

[page](.*)

为分页格式
$oldtitle=$title;//记录原文件名

if($paginationtype==1)
{
if(strpos($content, '[/page]

')!==false)
{
$content = preg_replace("|

\[page\](.*)\[/page\]

|U", '', $content);
}
if(strpos($content, '

[page]

')!==false)
{
$content = str_replace('

[page]

', '', $content);
}
$content = contentpage($content, $maxcharperpage);
}
elseif($paginationtype==0)
{
if(strpos($content, '[/page]

')!==false)
{
$content = preg_replace("|

\[page\](.*)\[/page\]

|U", '', $content);
}
if(strpos($content, '

[page]

')!==false)
{
$content = str_replace('

[page]

', '', $content);
}
}
if(strpos($content, '

[page]') !== false)
{
$contents = array_filter(explode('

[page]', $content));//生成分页数组
$pagenumber = count($contents);
for($i=1; $i&lt;=$pagenumber; $i++)//生成网址 			{ 				$pageurls[$i] = $this-&gt;url-&gt;show($r['contentid'], $i, $r['catid'], $r['inputtime']);
}
if(strpos($content, '[/page]

') !== false)//有标题分页,则全部标题分页
{
if(strpos($content, '

[page]') !== 0 )
{//首行不是标题分页,则加上标题分页,注意编辑器原代码,首行为有可能为

$content='

[page][/page]

'.$content;
}
$content=str_replace('

[page]

','

[page][/page]

',$content);//把不是分页标题的格式转换成分页标题
echo $content;
if(preg_match_all("|

\[page\](.*)\[/page\]

|U", $content, $m, PREG_PATTERN_ORDER))
{
foreach($m[1] as $k=&gt;$v)
{
$page = $k+1;
if ($v==''){$v='第'.$page.'页';};//分页标题为空时,输出第几页
$titles .= ''.$page.'、'.$v.'';
}
}
}
$page = $filesize = 0;
foreach($contents as $content)
{
$page++;
$pages = $this-&gt;url-&gt;show_pages($page, $pagenumber, $pageurls);
if($titles)
{
if (strpos($content,'

')==0){$content=substr_replace($content,"",0,4);};//符合w3c规范

不能为开头
if (strpos($content,'[/page]

')!==false)
{
list($title, $content) = explode('[/page]

', $content);
}
else
{
$title=$oldtitle.'('.$page.')';//没有标题的分页为原标题+页码
if ($page==1){$title=$oldtitle;};//第一页如果没有标题则为原标题
}
}
$title = strip_tags($title);
$head['title'] = $title.'_'.$C['catname'].'_'.$PHPCMS['sitename'];
ob_start();
include template('phpcms', $template);
$file = PHPCMS_ROOT.$pageurls[$page][0];
$filesize += createhtml($file);
}
return $filesize;
}
else
{
$page = $page ? $page : 1;
$images_number = $GLOBALS['images_number'];
$array_images = $GLOBALS['array_images'];
$title = strip_tags($title);
$head['title'] = $title.'_'.$C['catname'].'_'.$PHPCMS['sitename'];
$ishtml = 1;
$info = $this-&gt;url-&gt;show($r['contentid'], 0, $r['catid'], $r['inputtime']);
$file = PHPCMS_ROOT.$info[0];
ob_start();
include template('phpcms', $template);
return createhtml($file);exit;
}