解决PHPCMS2008内容页分页[page]的问题

这个问题我原来以为是没有的,但后来经过测试发现在PHPCMS2008各个版本中都存在,当然此问题仅当内容页URL为动态时才会发现,如果为静态生成的话则不会有此问题.
我先大体说一下这个[page]出问题的情景:

比如以下为两份内容的源代码
内容A:解决PHPCMS2008内容页分页[page]解决PHPCMS2008内容页分页[page]解决PHPCMS2008内容页分页
内容B:[page]解决PHPCMS2008内容页分页[page]解决PHPCMS2008内容页分页[page]解决PHPCMS2008内容页分页

大家认真看内容A和内容B,其实他们在URL动态打开时的分页总数是一样(分页数量没有错误),但是在内容分页第1页显示的内容就不一样了,内容A是可以正常显示第1页的;而内容B的第1页则显示为空白,到第2页才显示第1页的内容.这就是今天要解决的问题(注:经测试,此问题在静态生成时不存在).

现在我们仔细观察上面内容A和内容B的不同之处,发现内容B中[page]有3个,而且第1个是在具体内容的前面,问题就在这里.
按照官方程序的设计来说,正确的分页代码插入应该是:内容[page]内容[page]内容.所以大家要熟记这个分页插入规则,不要把[page]放到具体内容的前面.

那有没有办法,兼容这两种情况呢.当然可以.只要对show.php这个文件进行些许修改即可.以下winliuxq(liuxq.cn)就向大家提供兼容解决方案:
打开根目录的show.php
1.找到"$contents = array_filter(explode('[page]', $content));",在其下面添加两行:
$cont_p=str_cut($content,'7','');//提取内容代码中前7个字符
$cont_pn=substr_count($cont_p, "[page]");//判断前7个字符中是否存在[page]这串代码
2.将"$content = $contents[$page-1];"修改为以下代码:
if(!$cont_pn)
{
$content = $contents[$page-1];
}
else
{
$content = $contents[$page-0];
}

好了,问题得到解决了.有此烦恼的朋友现在就试试吧.

PHPCMS2008内容页分页显示全部的解决办法

问题表现描述以及解决后的显示图示见以下链接:
http://www.liuxq.cn/2009/12/478/

下面直接提供liuxq[www.liuxq.cn]的解决办法,很简单,只要修改一下/include/url.class.php这个文件即可.

打开这个文件,找到并将" function show_pages($page, $pagenumber, $pageurls) "这一行到" function update($contentid,$url) "之间的代码全部替换成以下代码:

{
$pages = '';
$multipage .= '<span>共'.$pagenumber.'页</span>';
$n = 9;//每页显示的页码数
$i = 0;
if ($pagenumber <= $n)
{
$start_page = 1;
$end_page = $pagenumber;
}
else
{
$i = floor($page/$n);
if($page >= 5)
{
if($page+2 >= $pagenumber)
{
$start_page = $page - 6;
}
else{
$start_page = $page - 4;
}
$end_page = ($page + 4) >= $pagenumber ? $pagenumber : $page + 4;
}
else
{
$start_page = 1;
$end_page = 8 >= $pagenumber ? $pagenumber : 8;
}
}
for($i=$start_page; $i<=$end_page; $i++)
{
$pages .= $page == $i ? '<span>'.$i.'</span>' : '<a href="'.$pageurls[$i][1].'" target="_self">'.$i.'</a>';
}
$firstpage =min($page, 1);
$lastpage =max($page,$pagenumber);
$prepage = max($page-1, 1);
$nextpage = min($page+1, $pagenumber);
if($page>1 && $page < $pagenumber)
{
$pagelist=$multipage.'<a href="'.$pageurls[$firstpage][1].'" target="_self">首页</a>'.'<a href="'.$pageurls[$prepage][1].'" target="_self">上一页</a>'.$pages.'<a href="'.$pageurls[$nextpage][1].'" target="_self">下一页</a><a href="'.$pageurls[$lastpage][1].'" target="_self">尾页</a>';
}
elseif($page+1 > $pagenumber)
{
$pagelist=$multipage.'<a href="'.$pageurls[$firstpage][1].'" target="_self">首页</a>'.'<a href="'.$pageurls[$prepage][1].'" target="_self">上一页</a>'.$pages;
}
else
{
$pagelist=$multipage.$pages.'<a href="'.$pageurls[$nextpage][1].'" target="_self">下一页</a><a href="'.$pageurls[$lastpage][1].'" target="_self">尾页</a>';
}
return $pagelist;
}
//重新改造结束 www.liuxq.cn

改造完成,如果是动态URL的话,前台刷新一下页面就能重新看到新的分页样式了,当然,分页的CSS样式需要自己写下了.

PHPCMS内容页分页第一页不显示的解决方法

打开show.php //在根目录里面
找到$content = $contents[$page];
修改为$content = $contents[$page-1];

事实证明,在没有分页的情况下,上述代码仍然不会出错.
好使.呵呵