Home > Article > Backend Development > Method for secondary development of custom paging functions in PHPCMS V9
When you build a website, the paging style may often have to be controlled according to the requirements of the template. At this time, many people will modify the pages() function in the global file phpcms\libs\functions\global.func.php. , so the problem arises: this paging function will also affect the background, that is to say, this paging function is shared by the entire site. The following provides a solution: (This requires modifying the file, remember to back up before modifying)
Open the file phpcms\libs\functions\global.func.php, find the paging function, copy it, paste it below the default paging function, and re- Name it, for example, I named it wz_pages, and save it.
Open phpcms/libs/classes/template_cache.class.php and find line 207:
$str .= '$pages = pages($'.$op.'_total, $page, $pagesize, $urlrule);';
Add below this line:
$str .= '$wz_pages = wz_pages($'.$op.'_total, $page, $pagesize, $urlrule);';
Save. Finally, if you want to use your custom paging function, just use {$wz_pages} directly in the template. If you want to modify the style in the future, modify it directly:
phpcms\libs\functions\global.func.php this The wz_pages function in the file is enough and will not affect the background.
Follow-up optimization:
During use, it was found that SQL paging cannot be used normally, and the following code must be added:
Open phpcms/libs/classes/template_cache.class.php and find line 178:
$str .= '$r = $get_db->sql_query("'.$sql.'");$s = $get_db->fetch_next();$pages=pages($s[\'count\'], $page, $pagesize, $urlrule);';
Add below it:
$str .= '$r = $get_db->sql_query("'.$sql.'");$s = $get_db->fetch_next();$wz_pages=wz_pages($s[\'count\'], $page, $pagesize, $urlrule);';
In this way, SQL paging is also normal.
Another follow-up optimization:
A friend mentioned that the above method cannot be used for the collection list pagination in the member center.
Because the paging function of the collection list is directly set in other files, it is not feasible to modify the template cache file. The modification method is provided below:
See the specific modifications below:
phpcms\libs\classes\model .class.php Line 61
$this->pages = pages($this->number, $page, $pagesize, $urlrule, $array, $setpages);
Change the above line to:
$this->pages = wz_pages($this->number, $page, $pagesize, $urlrule, $array, $setpages);
({$pages} in the template does not need to be changed For {$wz_pages})
The above is the first method.
But in this case, the background may also be affected. This place seems to be controlled In many places, you can also modify it in this way. It is the same file as above. Do not modify line 61. Add directly below line 61:
$this->wz_pages= wz_pages($this->number, $page, $pagesize, $urlrule, $array, $setpages);
Then go to: phpcms\modules\member\index.php line 718 and change the following line
$pages = $this->favorite_db->pages;
Modify to:
$wz_pages = $this->favorite_db->wz_pages;
## {$pages} in the template should be modified to {$wz_pages }, this is taking the collection list as an example, and the others are similar. The above is the content of the method of secondary development of custom paging functions in PHPCMS V9. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)! Related articles:
How to set SEO settings for the title of PHPCMS V9
Detailed explanation of the idea of adding secondary navigation to PHPCMS V9
Solutions to various problems in secondary development and use of phpcms v9