Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SMARTY] Stronicowanie i wyświetlanie linków
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
pitu
Tworzę system do wyświetlania informacji z tablicy, rekordów będzie dużo więc wykorzystałem paginację. Znalazłem klasę do SMARTY, która załatwia to w łatwy sposób.

Klasa: http://www.lotsofcode.com/download/php-array-pagination.zip

http://www.lotsofcode.com/php/smarty-pagination.htm

Mój problem polega na tym, że nie wiem jak przerobić klasę aby linki do stron wyglądały np. tak:

1 2 3 ...13 14 15 ... 21 22 23

Teraz wyświetlane są wszystkie linki do stron czyli:
1 2 3 4 5 6 7 8 .... itp.

Przy dużej ilości stron nie wygląda to zbyt ładnie, może ktoś pomoże w przerobieniu klasy lub posiada inną pod SMARTY, która umożliwi ustawienie tego.

Dane w szablonie pobieram na razie w podobny sposób jak na stronie autora klasy:
  1. {if !empty($listing)}
  2. {if !empty($pagination)}
  3. <div class="pagination">{$pagination}</div>
  4. {/if}
  5. {foreach item="item" from="$listing"}
  6. <tr>
  7. <td>{$item.id}</td>
  8. <td>{$item.title}</td>
  9. {/foreach}
  10. {/if}
Zaszczyk
Rozwiązałeś jakoś ten problem? Albo ktos inny? Bo też potrzebuję czegoś takiego.
snakee
Ja bym zrobił coś takiego

{if !empty($listing)}
{if !empty($pagination)}
<div class="pagination">{$pagination}</div>
{/if}
{$a = 0}// ustawienie jakiejś zmiennej która się zwiększa o jeden co pętla przetwarza tablice
{foreach item="item" from="$listing"}
{if $a < 3} //wyświetla tylko trzy pierwsze linki
<tr>
<td>{$item.id}</td>
<td>{$item.title}</td>
</tr>
{else if $a >= (($listing.length / 2)-1) && $a <= (($listing.length / 2)+1)}//wyświetla trzy środkowe linki
<tr>
<td>{$item.id}</td>
<td>{$item.title}</td>
</tr>
{else if $a >= ($listing.length - 3) && $a < $listing.length}//wyświetla trzy ostatnie linki
<tr>
<td>{$item.id}</td>
<td>{$item.title}</td>
</tr>
{/if}
{$a++} // a tu się ta zmienna powiększa o jeden
{/foreach}
{/if}

Nie zaglądałem do kodu więc nie wiem skąd się bierze dane i co w nich jest ale do wyświetlania linków jak 1 2 3 ....... 9 10 11.........18 18 20 bym tak zrobił.Pewnie się da to prościej zrobić ale sam zaczynam z programowaniem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.