Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szablon - czy i jak?
Forum PHP.pl > Forum > PHP
janusz.master
Witam
Problem mam z technika stosowania szablonow(w czystym php).
Mam mala strone strasznie zle napisana, chcialem sie wziac i zrobic w miare porzadnie i ladnie.
Pisze(bynajmniej staram się snitch.gif ) obiektowo. Warstwa bazy danych i ustalania informacji jakos mi idzie, gorzej z przejsciem do wygladu.

Szablony (jesli tak to mozna nazwac) polegaja u mnie na zwyklym dolaczaniu plikow z wygladem strony po zebraniu i ustaleniu informacji.
W index.php mam switcha dla zmiennej okreslajacej podstrone. Po tym switchu mam juz dane.

I teraz wlasnie nie wiem jak to ma wygladac: czy mam miec tez takiego switcha w szablonie i w zaleznosci od podstrony includowac inne podszablony?

Czy moze np. miec klasy np. NewsView które zwracaja kod HTML który zapisuję sobie do zmiennej $tresc np. newsy($tablicaNewsow), cos takiego (jest duzo bledow pewnie w kodzie, ale tym sie nie przejmujcie):
  1. <?php
  2. // index.php:
  3. switch($cat){
  4. case: 'news':
  5. $lista = newsDAO::getNews(5);
  6. $tresc = newsView->view($lista);
  7.  
  8.  
  9. //index.tpl
  10. include('gora.tpl');
  11. echo $tresc;
  12. include('dol.tpl');
  13. ?>
  14.  
  15. // newsView.php
  16. class newsView extends zasobView {
  17. function view(zasob $news)
  18. {
  19. $napis = "Tytul: ".$news->title."<br/>";
  20. $napis .= "Tresc: ".$news->content."<br/>";
  21. if($this->admin) $napis .= "edytuj<br/>";
  22. $napis .= "<br/>";
  23. return $napis;
  24. }
  25.  
  26. function viewAll($newsy)
  27. {
  28. $napis = '';
  29. if(count($newsy) == 0) $napis .= "Brak aktualnosci<br/>";
  30. else {
  31. foreach ($newsy as $news) {
  32. $napis .= $this->view($news);
  33. }
  34. return $napis;
  35. }
  36. }
  37.  
  38. function viewNewsMore(news $news)
  39. {
  40. return $news->content;
  41. }
  42.  
  43. function form(news $news = NULL, $errors = NULL)
  44. {
  45. $napis = '';
  46. $napis .= "Formularz newsa";
  47. return $napis;
  48. }
  49. }

Bo jesli w szablonach wykonywalbym kod bez zadnych funkcji itp to gdybym chcial uzyc podobnego wyswietlania newsa dla admina to musialbym tworzyc osobny szablon w którym byloby prawie to samo.

Jak to ma wygladac?? Nie potrzeba mi strasznie zaawansowanych sposobow, bo strona az taka nie jest.
batman
Popraw bbcode.
JoShiMa
A z jakich szablonów chcesz korzystać bo to chyba trzeba ustalić najpierw.

Poczytaj sobie tu: O szablonach

może coś Ci się rozjaśni.

Ja wcześniej robiłam tak, że miałam specjalną klasę, która po skompletowaniu danych generowała mi kod html, który jedną instrukcją echo był wypluwany na stronę. Teraz bawię się szablonami Smarty i instrukcjami warunkowymi, które pozwalają mi stawiać 'podszablony' w niektórych sekcjach w zależności od danych. Też myślałam nad stworzeniem szablonu smarty dla każdej podstrony, ale większość rzeczy się powtarza, więc zdecydowałam się na dynamiczne dołączanie 'podszablonów'. Nie twierdzę, że to najlepsze rozwiązanie, ale mi pasi.
janusz.master
Czytalem ten artykul o smarty wczesniej, ale mimo to ciezko mi wprowadzic w moja strone szablony(smarty tez).
Generalnie mam taki problem: jesli chce uzyc jakiegos formularza 2-3 razy to musze tworzyc osobny plik tylko z tym formularzem, ktory moze zajmowac kilka linijek. Normalnie mialbym go w funkcji (w pliku w ktorym bym mial wszystkie funkcje do wyswietlania rzeczy zwiazanych z newsami), a tak kazda rzecz musze trzymac w osobnym pliku zeby moc swobodnie skorzystac z niej kilka razy.

Tak ja widze te szablony dlatego nie potrafie z nich korzystac ;/
JoShiMa
Cytat(janusz.master @ 25.06.2008, 10:26:25 ) *
Generalnie mam taki problem: jesli chce uzyc jakiegos formularza 2-3 razy to musze tworzyc osobny plik tylko z tym formularzem


Owszem, ale ten plik może nie zawierać całej podstrony a jedynie część kodu html z formularzem i może być wczytany do szablonu podstrony w razie potrzeby. Poza tym co złego jest w trzymaniu integralnych kawałków szablonu w osobnych plikach?
janusz.master
No wlasnie jest bardzo duzo plikow, a kodu niezbyt wiele i dlatego wydaje mi sie to dziwne.
Ale skoro tak mówisz, to postaram sie tak zrobic, zobaczymy co z tego wyniknie.

Dzieki wielkie, pozdrawiam
JoShiMa
Cytat(janusz.master @ 25.06.2008, 10:44:01 ) *
No wlasnie jest bardzo duzo plikow, a kodu niezbyt wiele i dlatego wydaje mi sie to dziwne.

Dla jednych to może być dziwne. Dla mnie to oznacza po prostu porządek. Dam Ci przykład szablony, nad którym teraz pracuję. Mam główny szablon z schematem strony (jej rozkład jest jednakowy na każdej podstronie). Menu dodatkowe generuje się dynamicznie w zależności od podstrony, czyli w zalezności od tego jakie dane 'wstrzykne' do szablony. Podstrona zawiera treść, która składa się z sekcji. Mam kilka typów sekcji:
-post (tytul, data, tresc, 0-3 zdjęć)
-zdjęcie (Tytuł data, zdjęcie)
- formularz dodawania posta
- formularz dodawania zdjęcia
i tak dalej. W mojej aplikacji będę miała 12 różnych typów sekcji (w tym 5 różnych formularzy) i na jednej podstronie mogą występować sekcje różnego typu wymieszane ze sobą. Robię więc dla danej podstrony tablicę sekcji, której kolejne pola są tablicami asocjacyjnymi zawierającymi informację o typie i składnikach danej sekcji.

Podaję tę tablicę do szablonu a w szablonie pętlą ją obrabiam. W pierwszej kolejności pobieram typ sekcji i w zależności od tego wczytuje i wstawiam do głównego szablonu szablon przeznaczony do prezentowania tej konkretnej sekcji. Wydaje mi się to wygodne i uniwersalne.

Mam nadzieję, że nie zagmatwałam tego.
Cysiaczek
To nie ma nic wspólnego z zagadnieniami programowania obiektowego - przenoszę na PHP
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.