phpcms无法生成全部静态列表页,需要检查列表页之前的代码中是否有使用PC标签的list模块,而且标签中加入了page参数,导致后续列表page参数还是采用之前的值(当后一个列表总条数小于前一个列表时),就会出现无法生成所有列表页。同理,一个模板页面中使用多个PC标签时,只能使用一次page参数。
我举一个例子描述该情况,比如一个新闻列表,里边有60条数据,按照每页10条应该生成6个页面,但却只生成2个列表页。这种情况是由于在新闻列表之前的菜单中也采用了列表数据模式,比如有一个产品下拉列表,里边有10条数据,按照每页5条是生成2个下拉列表,但菜单中是没有翻页,只是在PC标签中加入page参数,而列表中未采用pages页面,导致生成的PAGES常量被定义,后边新闻列表还采用PAGES为2的常量,因此只生成2个列表页。
菜单中产品下拉列表代码如下:
{pc:content action="lists" catid="27" num="5" order="id DESC" page="$page"}{loop $data $r}
<a title="{$r[title]}" href="{$r[url]}">{str_cut($r[title],30)}</a>
{/loop}{/pc}
新闻列表代码如下:
{pc:content action="lists" catid="30" num="10" order="id DESC" page="$page"}{loop $data $r}
<a title="{$r[title]}" href="{$r[url]}">{str_cut($r[title],30)}</a>
{/loop}
<div id="pages" class="text-c">{$pages}</div>
{/pc}
通过分析代码发现,正是由于菜单中产品下拉列表代码书写不规范,未使用分页,却加入分页参数(红色部分),导致后边新闻列表分页参数使用之前的,进而导致程序出错。
分页参数总页数常量定义代码(列表页生成多个页面时使用):
/**
* 分页函数
*
* @param $num 信息总数
* @param $curr_page 当前分页
* @param $perpage 每页显示数
* @param $urlrule URL规则
* @param $array 需要传递的数组,用于增加额外的方法
* @return 分页
*/function pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpages = 10) {
……
$pages = ceil($num / $perpage);
if (defined('IN_ADMIN') && !defined('PAGES')) define('PAGES', $pages);
转载请注明:半亩方塘 » phpcms无法生成全部静态列表页