Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> klasa template
deniol13
post 30.04.2010, 22:12:52
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 2
Dołączył: 30.11.2009

Ostrzeżenie: (10%)
X----


witam, jestem w trakcie robienia prostej klasy styli (coś jak 1/100000 z smarty)

mam cuś takiego
  1. <?php
  2.  
  3. class phpc_Template
  4. {
  5. public $template_file = array(); //Tutaj trafia niezmodyfikowana zawartosc pliku z stylem
  6. public $vars = array(); //Tutaj zapisywane sa 'zmienne' stylu
  7.  
  8. public function load( $file, $id )
  9. {
  10. //Sprawdzamy czy plik z stylem istnieje
  11. if( !file_exists( $file ) )
  12. {
  13. //plik nie istnieje, pokazujemy wiadomosc bledu
  14. die( '<b>Critical error</b> : template file ' . $file . ' does not exist' );
  15. }
  16. else
  17. {
  18. //plik istnieje
  19. $this->template_file[$id] = file_get_contents( $file ); //Wczytujemy zawartosc pliku i wrzucamy do tablicy
  20. }
  21. }
  22.  
  23. public function set_var( $var, $content, $for_id )
  24. {
  25. $this->vars[$for_id][$var] .= $content; // Dodajemy zmienna stylu do tablicy
  26. }
  27.  
  28. public function display( $id )
  29. {
  30. foreach( $this->vars[$id] AS $var => $content )
  31. {
  32. $this->template_file[$id] = str_replace( '{' . $id . '.' . $var . '}', $content, $this->template_file[$id] );
  33. }
  34.  
  35. //Pokazujemy zmodyfikowany plik stylu
  36. return $this->template_file[$id];
  37. }
  38. }
  39.  
  40. $c = new phpc_Template;
  41. $c->load('test.html', 'test');
  42. $c->set_var( 'TEST', 'test', 'test' );
  43. echo $c->displat('test');
  44.  
  45. ?>


Wszystko jest ok, i w pliku stylu wpisuje <a href="{TEST}">{TEST}</a>
I jest ok a ja bym chcial cos takiego aby to <a href="{TEST}">{TEST}</a> wykonalo sie kilka razy czyli bym musial zrobic pętlę oraz jakąś funkcję która pobierze pętle według wzoru

{LOOP[ID]}
Jakis kod html i {TEST}
{/LOOP[ID]}

Ale nie mam pojecia jak to zrobic
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
sf
post 1.05.2010, 09:52:53
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Smarty zamienia pseudokod na PHP więc w Twoim przypadku zamieni to {LOOP} na pętlę ( for, foreach ), zapisze jako plik .php i potem odpali ten skrypt PHP.

Ten post edytował sf 1.05.2010, 09:54:29


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
deniol13
post 1.05.2010, 12:02:24
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 2
Dołączył: 30.11.2009

Ostrzeżenie: (10%)
X----


no ok, ale jak mam to zapisać w kodzie php? Bo nie mam żadnego kompletnie pomysłu
Go to the top of the page
+Quote Post
Crozin
post 1.05.2010, 12:11:01
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


O "systemach szablonów" było już naprawdę wiele wątków na forum... za każdym razem było wyjaśniane dlaczego pisanie czegoś takiego w celach innych niż edukacyjnych jest bezsensu oraz jak się za to poprawniej zabrać.
Go to the top of the page
+Quote Post
gothye
post 21.06.2010, 05:40:24
Post #5





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


zmienne typu :

{LOOP[ID]}

zmień na :

  1. <?php foreach($id as $_id) : ?>
  2. Jakis kod html i <?=$_id?>
  3. <?php endforeach ?>


potem jeśli chcesz wykonac kod przed wysłaniem stosujesz funkcje eval

wiec wynikiem tej funkcji będzie kod html , i można sie pokusić o prosta klasę cache na plikach winksmiley.jpg


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 09:25