如果你是一個經驗豐富的phpcms二次開發人員,本篇文章可以忽略不計,因為這裡的寫法自己都覺得很惡心
今天在開發一個網站自建了一個模塊叫做論壇模塊,目錄名稱:luntan
在論壇列表頁面中需要顯示所有的帖子並需要分頁來顯示,按照phpcms默認模版中標簽定義方式
{pc:luntan action="get_send" num="2" page="$_GET[page]"} 按照這種寫法在程序中data['limit'] = '0,2' 但是data[page] = NULL
這樣接收不到頁碼,但是由於個人水平研究不明白這裡應該要怎麼才能將系統中的分頁方法加載進來並讓它好用,糾結好久想出了一個昏招,希望各位指正,並且如果有好的建議希望各位能夠不惜時間,教我一下
要獲得論壇發帖的列表需要一個獲取的方法,如下
public function get_send($data){ $page = empty($_GET['page']) ? 1 : intval($_GET['page']); $send_info = $this->luntan_send->listinfo($where = '', $order = '', $page, $pagesize = 20); //$pages_send = $this->luntan_send->pages; for($i = 0; $i < count($send_info); $i++){ $type_info = $this->luntan_type->get_one(array('type_id'=>$send_info[$i]['send_type_id'])); $send_info[$i]['send_type_name'] = $type_info['type_name']; $reply_info = $this->luntan_reply->get_one(array('reply_send_id'=>$send_info[$i]['send_id']),'count(*) as reply_send_num'); $send_info[$i]['send_reply_num'] = $reply_info['reply_send_num']; } //echo $pages_send; return $send_info; }
注意在return上面一行的 echo $pages_send; 這裡其實是借鑒了後台使用分頁的方法讓頁面可以正常的顯示出頁碼,並且可以做跳轉
但是如果解開這個echo $pages_send;那麼就沒辦法在頁面中控制其顯示的位置,為了讓他能按照我的意願來顯示,在這個方法的下面又添加了一個方法,
public function get_send_page($data){ $page = empty($_GET['page']) ? 1 : intval($_GET['page']); $send_info = $this->luntan_send->listinfo($where = '', $order = '', $page, $pagesize = 20); $pages_send = $this->luntan_send->pages; echo $pages_send; return $send_info; }
看到兩個方法的名稱的不同了,get_send 和 get_send_page 差了一個page,這樣在裡面的函數代碼寫法上後者由於只是需要顯示頁碼,而前者只需要顯示數據,則可以將get_send方法中用於獲得頁碼的調用和輸出屏蔽,即
//$pages_send = $this->luntan_send->pages;
......
//echo $pages_send;
而後者 get_send_page 方法中,則不需要下一步的for循環來處理數據至於返回什麼數據也不重要,主要的是利用echo出來的頁面,所以這兩個函數相同的部分為
$page = empty($_GET['page']) ? 1 : intval($_GET['page']);
$send_info = $this->luntan_send->listinfo($where = '', $order = '', $page, $pagesize = 20);
如果要修改默認頁面中顯示的個數,需要同事修改兩個方法中
$send_info = $this->luntan_send->listinfo($where = '', $order = '', $page, $pagesize = 20);一句的$pagesize變量