我現在想使用smarty產生列表頁,是真靜態。
如:
分類:新聞
共有50條資料。
一個列表頁為10條資料。
共有5個分頁。
如dedecms產生欄目頁一樣。
請教下大牛們,如何??勞煩寫個小例子。
回複討論(解決方案)
php 怎麼做,smarty 還是一樣的沒啥區別
把產生的內容5個頁要做成一定格式的頁面,應該需要在smarty中專門寫個方法
http://bbs.php100.com/read-htm-tid-308311.html
版主發的連結,代碼不具體,模板也不好實現。
痛點在於,
列表頁模板如何寫?
背景程式,如何分頁產生不同的頁面,調用不同的文章。
我已經做成功了,分享代碼給大家,希望以後有人用得著。
public function tplmakelist(&$tpl){$pageSize=1;$_field=array('a.id','a.title','b.typedir','b.templist','b.keywords','b.description');$this->_tables=array(DB_FREFIX.'article a',DB_FREFIX.'article_category b');$data=parent::select($_field,array('where'=>array("a.catid=b.id AND b.id={$this->_R['typeid']}")));$total=count($data);//分類下的所有文章$pageTotal=ceil($total/$pageSize);//共有多少個分頁$tpl->template_dir=SMARTY_TEMPLATE_DIR;for ($i=1;$i<=$pageTotal;$i++){//產生的頁數$file_name=ROOT_PATH.$data[0]->typedir."/list_{$this->_R['typeid']}_$i.html";$this->_tables=array(DB_FREFIX.'article a',DB_FREFIX.'article_category b');$firstPage = ($i-1)*$pageSize;$datas=parent::select($_field,array('where'=>array("a.catid=b.id AND b.id={$this->_R['typeid']}"),'limit'=>"$firstPage,$pageSize"));$tpl->assign('findlist',$data[0]);$tpl->assign('pagelist',$datas);$content=$tpl->fetch($data[0]->templist);$this->MakeHtmlFile($file_name, $content);}}private function MakeHtmlFile($file_name, $content) { //目錄不存在就建立 if (!file_exists (dirname($file_name))) { if (!@mkdir (dirname($file_name), 0777)) { die($file_name."目錄建立失敗!"); } } if(!$fp = fopen($file_name, "w")){ echo "檔案開啟失敗!"; return false; } if(!fwrite($fp, $content)){ echo "檔案寫入失敗!"; fclose($fp); return false; } fclose($fp); chmod($file_name,0666); }
{foreach from=$pagelist item=list}{$list->title}{/foreach}
以後如果你要用的話,把資料庫的欄位換下,串連資料庫根據你自己的引擎來寫,當然還有待擴充,剛寫完的。