Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [vste]Stronicowanie
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
Joachim Peters
Witam,

Ostatnio przyszły mi plany na napisanie własnego cms, ma opierać się on na systemie szablonów podobnym do tego zastosowanego w skrypcie forum phpBB.
Narazie obmyślam jak to wszystko ma wyglądać, ale natrafiłem na jeden problem, który dotyczy właśnie stronicowania.
Jak mam połączyć ten kod z tym systemem szablonów
  1. <?php
  2. [...]
  3. if ($strona != 0) echo "<a href=?strona=" . ($strona-1) . ">Poprzednia</a> ";
  4.  
  5. for($i = 0; $i < ceil($size / $naStronie); $i++) {
  6. if ($strona == $i) echo " <span style="font-size: 10px">[<b>" . ($i + 1) . "</b>]</span>";
  7. else echo " <a href=?strona=$i>(" . ($i + 1) . ")</a>";
  8. } 
  9.  
  10. if ($strona < ceil($size / $naStronie)-1) echo " <a href=?strona=" . ($strona + 1) . ">Następna</a>";
  11. [...]
  12. ?>
piczu
nie wiem jakw phpBB ale w smarty to jest tak
  1. <?php
  2. $smarty->assign("strona",$strona);
  3. $smarty->assign("strony",ceil($size / $naStronie));
  4. ?>

i smarty
Kod
{if $strona neq 0}                                                              
<a href=?strona={$strona-1}>Poprzednia</a>                                      
{/if}                                                                          
{section name=$nr loop=$strony}                                                
    {if $strona eq $nr}                                                        
    <span>[{$nr+1}]</span>                                                      
    {else}                                                                      
    <a href=?strona=$nr>({$nr+1})</a>                                          
    {/if}                                                                      
{/section}                                                                      
{if $strona lt $strony-1}                                                      
<a href=?strona={$strona+1}>Poprzednia</a>                                      
{/if}
Joachim Peters
W tym systemie szablonów wygląda to tak:
  1. <?php
  2. $template->assign_body('demo.tpl', 'demo');
  3.  
  4. $template->assign_vars( array(
  5. 'TEST' => 'test'
  6. ));
  7.  
  8. $template->assign_loop_vars('news', array(
  9. 'TITLE' => 'News'
  10. ));
  11.  
  12. $template->display_body();
  13. ?>


i tpl wygląda np. tak

  1. <b>{TEST}</b>
  2. <!-- BEGIN news -->
  3. {news.TITLE}
  4. <!-- END news -->



teraz zrobiłem tak, ale nie wiem czy kod jest poprawnie napisany:
  1. <?php
  2. $to = "";
  3. if ($strona != 0) $to .= "<a href=?m=coments&n=" . $n . "&strona=" . ($strona-1) . ">Poprzednia</a> ";
  4.  
  5. for($i = 0; $i < ceil($size / $naStronie); $i++) {
  6. if ($strona == $i) $to .= " <span style="font-size: 10px">[<b>" . ($i + 1) . "</b>]</span>";
  7. else $to .= " <a href=?m=coments&n=" . $n . "&strona=$i>(" . ($i + 1) . ")</a>";
  8. } 
  9.  
  10. if ($strona < ceil($size / $naStronie)-1) $to .= " <a href=?m=coments&n=" . $n . "&strona=" . ($strona + 1) . ">Następna</a>";
  11.  
  12. $template->assign_vars(array(
  13. 'PAGER' => $to
  14. ));
  15. ?>
piczu
w kodzie php nie moze byc zadnego znacznika HTML. Czyli:
  1. <?php
  2. $template->assign_body('demo.tpl', 'demo');
  3.  
  4. $template->assign_vars( array(
  5. 'strona' => $strona,
  6. 'strony' => ceil($size / $naStronie)
  7.  
  8. $template->display_body();
  9. ?>

a reszta (warunki i petla) w tpl
Joachim Peters
Nie rozumiesz, że to nie są smarty ;]
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-2025 Invision Power Services, Inc.