Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SMARTY] Porcjowanie - tz. pager - w smarty..
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
sniver
oto wersja 0.0.0.0.0.123xr54 i 4 marchweki sciana.gif

a oto kodzik który w całości można zaimplementować w smartach:

np. plik porcjowanie.tpl

  1. {if $param.iloscStron > 0}
  2. <div class="sitesList">
  3. {strip}
  4. {math equation='(x * y) + z' x=2 y=$param.promien z=1 assign="iloscStronDoWyswietlenia"}
  5. {if ($param.iloscStron <= $iloscStronDoWyswietlenia)}
  6. {if ($param.iloscStron < $iloscStronDoWyswietlenia)}
  7. {math equation='x' x=1 assign="stronyOdLewej"}
  8. {math equation='x' x=$param.iloscStron assign="stronyOdPrawej"}
  9. {else}
  10. {math equation='x' x=1 assign="stronyOdLewej"}
  11. {math equation='x' x=$iloscStronDoWyswietlenia assign="stronyOdPrawej"}
  12. {/if}
  13. {elseif (($param.iloscStron > $iloscStronDoWyswietlenia) && ($param.wyswietlanaStrona > ($param.promien+1)) && ($param.wyswietlanaStrona <= ($param.iloscStron-$param.promien)))}
  14. {math equation='x-y' x=$param.wyswietlanaStrona y=$param.promien assign="stronyOdLewej"}
  15. {math equation='x+y' x=$param.wyswietlanaStrona y=$param.promien assign="stronyOdPrawej"}
  16. {elseif (($param.iloscStron > $iloscStronDoWyswietlenia) && ($param.wyswietlanaStrona < $param.iloscStron))}
  17. {if ($param.wyswietlanaStrona <= ($param.promien+1))}
  18. {math equation='x' x=1 assign="stronyOdLewej"}
  19. {math equation='x' x=$iloscStronDoWyswietlenia assign="stronyOdPrawej"}
  20. {else}
  21. {math equation='(z-x)-(x-(y-z))-q' q=1 x=$param.promien y=$param.iloscStron z=$param.wyswietlanaStrona assign="stronyOdLewej"}
  22. {math equation='x' x=$param.iloscStron assign="stronyOdPrawej"}
  23. {/if}
  24. {elseif (($param.wyswietlanaStrona == $param.iloscStron))}
  25. {math equation='x-y' x=$param.iloscStron y=$iloscStronDoWyswietlenia assign="stronyOdLewej"}
  26. {math equation='x' x=$param.wyswietlanaStrona assign="stronyOdPrawej"}
  27. {else}
  28. {math equation='x' x=1 assign="stronyOdLewej"}
  29. {math equation='x' x=$iloscStronDoWyswietlenia y=1 assign="stronyOdPrawej"}
  30. {/if}
  31. {/strip}
  32. Strona {$param.wyswietlanaStrona} z {$param.iloscStron}<br />
  33. <div class="sites">
  34. {if $param.iloscStron > 1}
  35. {if ($param.wyswietlanaStrona > 1)}
  36. <a href="{$param.url|replace:'[__NUMER_STRONY__]':$param.wyswietlanaStrona-1}" title="&laquo; Poprzednia"><span>&laquo;</span> Poprzednia</a>
  37. <span>&nbsp;&nbsp;</span>
  38. {/if}
  39. {section name=i start=$stronyOdLewej loop=$stronyOdPrawej+1}
  40. {if ($smarty.section.i.index == $param.wyswietlanaStrona)}
  41. <strong><a href="{$param.url|replace:'[__NUMER_STRONY__]':$smarty.section.i.index}" title="Przejdź do strony {$smarty.section.i.index} z {$param.iloscStron}">{$smarty.section.i.index}</a></strong>
  42. {else}
  43. <a href="{$param.url|replace:'[__NUMER_STRONY__]':$smarty.section.i.index}" title="Przejdź do strony {$smarty.section.i.index} z {$param.iloscStron}">{$smarty.section.i.index}</a>
  44. {/if}
  45. {/section}
  46. {if ($param.wyswietlanaStrona < $param.iloscStron)}
  47. <span>&nbsp;&nbsp;</span>
  48. <a href="{$param.url|replace:'[__NUMER_STRONY__]':$param.wyswietlanaStrona+1}" title="następna strona &raquo;">następna <span>&raquo;</span></a>
  49. {/if}
  50. {/if}
  51. </div>
  52. </div>
  53. {/if}


A oto co potrzeba zapodać by działało smile.gif

  1. <?php
  2.  
  3. $tpl = new smarty;
  4.  
  5. //....blebleble co kto tam chce sobie powpisywać
  6. $p = array(
  7. 'iloscStron' => 50,
  8. 'wyswietlanaStrona' => (isset($_GET['i']) ? $_GET['i'] : 1),
  9. 'promien' => 5,
  10. 'url' => 'newsy-[__NUMER_STRONY__].html'
  11. );
  12.  
  13. $tpl->assign( 'param', $p );
  14. $tpl->display('porcjowanie.tpl');
  15.  
  16. ?>


Może sie komuś przyda!
rocktech.pl
Hej sniver.

Zabierasz się do tego od zlej strony.
Takie coś nadaje się na funkcje smarty.
Tworzysz plik function.pager.php
  1. <?php
  2. function smarty_function_pager($params, &$smarty){
  3. //tu kod z pliku porcjowanie.tpl napisany w php a nie jak teraz strasznie powolną składnią smarty
  4. }
  5. ?>


Daje to taką korzyść, że wywołanie pagera w dowolnym pliku .tpl sprowadza się do tego.
  1. {pager iloscStron=$x wyswietlanaStrona=$y promien=$z url=$zz}


Jeżeli nie chcesz przekazywać zmiennych w ten sposób możesz utworzyć zmienne w pliku php jak to się dzieje teraz.
W pliku function.pager.php dodać linijkę.
  1. $params=&$smarty->get_template_vars('param');


POMOC
sniver
aha! a to dobre to jest..
wiedziałem o funkcjach ale jakoś wolałem zamęczać sie z tymi dodatkowymi algorytmami w smarty biggrin.gif
rocktech.pl
No to do dzieła czekamy na wersję 0.0.0.0.2 tongue.gif.
sniver
okej - jak zrobie to dam znać biggrin.gif
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.