Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Smarty] Problem z wyświetlaniem
Forum PHP.pl > Forum > PHP
sebekzosw
Chciałbym uzyskać taki wynik (screen):

  1. <style type="text/css">
  2. .zielony {
  3. float: left;
  4. width:291px;
  5. height:139px;
  6. padding-left: 15px;
  7. padding-right: 15px;
  8. padding-top: 15px;
  9. margin-top: 8px;
  10. background-color:#008000;
  11. }
  12.  
  13. .czerwony {
  14. float: left;
  15. width:291px;
  16. height:139px;
  17. padding-left: 15px;
  18. padding-right: 15px;
  19. padding-top: 15px;
  20. margin-left: 8px;
  21. margin-right: 8px;
  22. margin-top: 8px;
  23. background-color:#CA0000;
  24. }
  25.  
  26. <div style="width:980px;margin:0 auto;">
  27. <div class="zielony">zielony</div>
  28. <div class="czerwony">czerwony</div>
  29. <div class="zielony">zielony</div>
  30.  
  31. <div class="zielony">zielony</div>
  32. <div class="czerwony">czerwony</div>
  33. <div class="zielony">zielony</div>
  34. </div>


Tylko, że za pomocą smarty - nie mam bladego pojęcia jak zrobić pętlę ;/

Oto kod PHP:
  1. <?
  2. $tablica = array();
  3. for($i=0;$i<20;$i++) array_push($tablica, $i);
  4. $smarty->assign('tablica', $tablica);
  5. $smarty->display("test.tpl");
  6. ?>


a tu kod Smarty:

  1. {literal}
  2. <style type="text/css">
  3. .zielony {
  4. float: left;
  5. width:291px;
  6. height:139px;
  7. padding-left: 15px;
  8. padding-right: 15px;
  9. padding-top: 15px;
  10. margin-top: 8px;
  11. background-color:#008000;
  12. }
  13.  
  14. .czerwony {
  15. float: left;
  16. width:291px;
  17. height:139px;
  18. padding-left: 15px;
  19. padding-right: 15px;
  20. padding-top: 15px;
  21. margin-left: 8px;
  22. margin-right: 8px;
  23. margin-top: 8px;
  24. background-color:#CA0000;
  25. }
  26. {/literal}
  27. <div style="width:980px;margin:0 auto;">
  28. {foreach name=petla item=tablica from=$tablica}
  29. <div class="{if $smarty.foreach.petla.index is div by 2}zielony{else}czerwony{/if}">{$tablica}</div>
  30. {/foreach}
  31. </div>


i uzyskuje taki wynik (screen), a tu kod HTML:
  1. <style type="text/css">
  2. .zielony {
  3. float: left;
  4. width:291px;
  5. height:139px;
  6. padding-left: 15px;
  7. padding-right: 15px;
  8. padding-top: 15px;
  9. margin-top: 8px;
  10. background-color:#008000;
  11. }
  12.  
  13. .czerwony {
  14. float: left;
  15. width:291px;
  16. height:139px;
  17. padding-left: 15px;
  18. padding-right: 15px;
  19. padding-top: 15px;
  20. margin-left: 8px;
  21. margin-right: 8px;
  22. margin-top: 8px;
  23. background-color:#CA0000;
  24. }
  25.  
  26. <div style="width:980px;margin:0 auto;">
  27. <div class="zielony">0</div>
  28. <div class="czerwony">1</div>
  29. <div class="zielony">2</div>
  30. <div class="czerwony">3</div>
  31. <div class="zielony">4</div>
  32. <div class="czerwony">5</div>
  33. </div>


Miałby ktoś sposób na rozwiązanie mojego problemy? z góry dziękuję za pomoc winksmiley.jpg
Zyx
Weź sobie całego diva w instrukcję warunkową. Przecież czarno na białym widać, że nie wyświetlasz w jego treści żadnego słowa "zielony" lub "czerwony" tylko indeks aktualnej komórki tablicy.
sebekzosw
tu nie chodzi o tekst wyświetlany tylko o kolor tła

  1. {if $smarty.foreach.petla.index is div by 2}zielony{else}czerwony{/if}


Skoro pisze Ci czarno na białym, że nie masz instrukcji warunkowej, to powiedz mi gdzie masz oczy?

Już rozwiązałem - funkcja {cycle} z trzema wartościami ma być winksmiley.jpg

  1. {foreach name=petla item=tablica from=$tablica}
  2. <div class="{cycle values='zielony,czerwony,zielony'}">{$tablica}</div>
  3. {/foreach}
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.