phpテンプレートページにおけるページングコードの解析を簡略化

3354 ワード

テンプレートを使用する場合、ページング情報を表示する際の操作が面倒で、n複数のテンプレートにページングブロックがあるという問題が発生します.
例:
---全部で20件の記録があり、現在の3/5ページのトップページの前のページの次のページの最後のページGO---
初めてこの問題に遭遇した道友は、この問題を解決することを考えている間にphpのアイデアを打っているようで、どのようにphpで実現するかを考えていますが、あなたがどのように設計しても2つの案に設計されています.
1、ネストループで実現
2、n個以上の判断でやる
しかし、最終的には面倒で、解析に使用するサーバ側のリソースです.
あなたのphpの代わりにjavascriptを使ってもいいです!!!これによりphpスクリプトのコード量を減らすことができ,解析ページングの作業をクライアント自身に任せることもできる.ただしjavascriptのデバッグは面倒かもしれません.
最も重要なのは,ページング表示を簡略化できる場合,解析テンプレートが直面する苦痛である.
次にpearをサポートするitxテンプレートツールで解析するテンプレートを用いる.
ここでは、ブロックを表す{recordcount}と同様の文字列が変数です.
----------------list.tpl---------------------
 
  
// html






<!-- <br>BEGIN page --> <br>recordCount = {recordcount}; <br>show = {showinonepage} <br>pageCount = {pagecount}; <br>pageNow = {page}; <br>pageStr = "?page=_page_"; <br>document.write(showListPage0(recordCount, show, pageCount, pageNow, pageStr)); <br><!-- END page <br>// -->

// html
--------------------page.js------------
//--------------- 20 , 3/5 GO-------------------
//recordCount = 20;
//show = 20
//pageCount = 5;
//pageNow = 3;
//pageStr = "?page=_page_";
//document.write(showListPage(recordCount, show, pageCount, pageNow, pageStr));
function showListPage0(recordCount, show, pageCount, pageNow, pageStr){
if(pageCount<1) pageCount =0;
if(pageNow<1) pageNow = 0;
str = '
'+recordCount+''+pageNow+'/'+pageCount+' ';
if(pageNow<=1)
str += " ";
else
str += " トップページ ";
if(pageNow<=1)
str += " ";
else
str += " のページ ";
if(pageNow>=pageCount)
str += " ";
else
str += " のページ ";
if(pageNow>=pageCount)
str += " ";
else
str += " ページ ";
str += " ";
str += "
";
return str;
}
function pagego0(pageGo,pageNow,pageCount,pageStr){
if(pageGo>=1 && pageGo<=pageCount && pageNow!=pageGo)
window.location = pageStr.replace("_page_", pageGo);
}

また,この方法はテンプレートを用いなくても,{recordcount}のような類似文字列を変数の値で置き換えるだけでよいページ分割ソリューションである.