程序员人生 网站导航

PHPCMS2008内容页分页[page]的解决方法

栏目:DedeCMS时间:2014-05-27 04:20:10

  这个问题我原来以为是没有的,但后来经过测试发现在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(http://www.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];
}

  好了,问题得到解决了

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐