次に、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}<div><a href="">{$list->title}</a></div>{/foreach}