ホームページ > バックエンド開発 > PHPチュートリアル > Smarty による静的ページの生成の問題は、検討する価値がありますか?

Smarty による静的ページの生成の問題は、検討する価値がありますか?

WBOY
リリース: 2016-06-23 14:02:30
オリジナル
778 人が閲覧しました

次に、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}
ログイン後にコピー

将来的に使用したい場合は、データベース内のフィールドを置き換えて、データベースに接続し、独自のエンジンに従って拡張する必要があります。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート