2012-02-17 6 views
0

この質問は何度か尋ねられましたが、実際に何か手掛かりが見つかりませんでした。Building Pagination

私はページ番号は次のように生成されるクライアントのプロジェクトに取り組んでいます:

[1] [2] [3] [4] [5] [6] [7] [8] [ 9] [10] [11]など...

100ページがある場合、これらの数値は... [100]になります。ここで

は、私が使用していますコードです:

{foreach var=$page from=$pages counter=$counter} 
<li><a href="$page.page_url">$counter</a> 
{/foreach} 

私はせいぜい10ページ番号がページごとに表示されていることを彼らがそのようなページ付けするために探しています。

非常に助かります。

ありがとうございます。

答えて

0

まず、現在のページのページ番号を覚えておく必要があります。次に、改ページの動作を決定します。現在のページ、次の4ページ、前のページ3ページ、最初のページと最後のページの例

ページ番号9の場合、次のようになります。 [1] ... [6] [7] [8] [太字9 ] [10] [11] [12] [13] ... [100]

次の(難しい)ものは、効率的なアルゴリズムを定義しています。例えば

  1. リストに、現在のページを入れて空のリスト
  2. を定義します。
  3. 現在のページの前に所望の量の要素を追加します(たとえば、現在のページの最初の要素とm要素)
  4. 現在のページの後ろに所望の量の要素を追加しますページと最後の要素)
  5. ページ分割を生成するためにリストを反復処理します。

反復例:ページの大量のために

foreach element on list: 
    if element.value == current_page 
     print_bold [element.value] 
    else 
     print [element.value] 
    nextElement = list.nextElement 
    if nextElement.value - element.value > 1: 
     print "..." 
+0

おかげで、私は雇わ開発者は仕事を終わらせる。しかし、あなたが言ったように、効率的なアルゴリズムを定義することは、実際には複雑な作業でした。 –