Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> System szablonów
thoriam
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.02.2012

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


Witam mam mały problem z wybraniem szablonów. Korzystam od jakiegoś czasu ze smarty ale opinii dobrych o tym nie słyszałem. Zresztą samemu zobaczyłem że mielenie całej templatki nie jest chyba zbyt dobrym pomysłem jeśli chodzi o wydajność. Szukam czegoś innego. No właśnie czego questionmark.gif Na pewno potrzebny mi jest cache i tyle. Co polecacie??
Go to the top of the page
+Quote Post
Uriziel01
post
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Sprawdź RainTPL. Gorąco polecam.

EDIT:
Co do złych opinii o smarty to nie masz co ich słuchać, są one oparte na starych wesjach tego systemu, najnowsze są jednak bardzo wydajne. Jedyną wadą (jak dla mnie) jest zbyt duże rozbudowanie biblioteki, zbyt rozbudowana składnia oraz masa niepotrzebnych funkcjonalności.

Ten post edytował Uriziel01 3.03.2012, 22:18:39
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat
Co do złych opinii o smarty to nie masz co ich słuchać, są one oparte na starych wesjach tego systemu, najnowsze są jednak bardzo wydajne. Jedyną wadą (jak dla mnie) jest zbyt duże rozbudowanie biblioteki, zbyt rozbudowana składnia oraz masa niepotrzebnych funkcjonalności.


Trochę sam sobie zaprzeczasz wink.gif bo nie ma co słuchać o tych opiniach, ale sam piszesz że jednak jakieś minusy ma.. Składnia to nie są jedyne minusy. Największym minusem jest fakt, że jeżeli chcesz wykonać coś niestandardowego, to musisz pisać plugin, funkcję lub inne ustrojstwo, tylko dlatego że całość jest parsowana znak po znaku.. Zrobiła się niestety ze smarty wielka kobyła, która jest przerostem treści nad formą..

Szukaj jakiego kolwiek systemu szablonów, cache bardzo łatwo sobie samemu dorobić. Szukaj takiego który nie będzie miał jakichś specjalnych ograniczeń, jaki nie będzie miał jakieś super wymyślonej składni.

Się trochę zareklamuje, i zarzucę ci do przejrzenia swój system szablonów. Tzn, żaden to system, ledwie jedna klasa wink.gif Ale mimo wszystko ma całkiem spore możliwości. A tutaj średniej jakości opis: http://forum.php.pl/index.php?showtopic=18...mp;#entry921998
Go to the top of the page
+Quote Post
pedro84
post
Post #4





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


A z ciekawości, po co Ci w ogóle jakiś system szablonów? smile.gif


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
kiler129
post
Post #5





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(pedro84 @ 3.03.2012, 23:10:28 ) *
A z ciekawości, po co Ci w ogóle jakiś system szablonów? smile.gif


Aby oddzielić frontend od backendu smile.gif

Co do samego tematu to nie lepiej napisać coś własnego i skrojonego na miarę? smile.gif
Przecież to dość prosta sprawa w sumie.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
pedro84
post
Post #6





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Cytat(kiler129 @ 4.03.2012, 02:57:21 ) *
Aby oddzielić frontend od backendu smile.gif

Oddzielenie warstwy biznesowej od prezentacji nie równa się użyciu systemu szablonów. Ja tam preferuję czyste PHP, żadne Smarty, Twigi, itp.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


A ja polecam http://phptal.org/ , oparty na pythonowym TAL (w Zope). Największa zaleta to sprawdzanie poprawności kodu podczas parsowania oraz łatwe przełączanie HTML / XHTML.


--------------------
Go to the top of the page
+Quote Post
thoriam
post
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.02.2012

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


tzn. ja już mam pewien bardzo prosty szablon dwie klasy podstawowa
  1.  
  2. abstract class View
  3. {
  4. private $_templateDir ='/';
  5. private $_extension ='php';
  6.  
  7. public function __construct()
  8. {
  9. $this->setTemplateDir($this->_templateDir);
  10. $this->setExtension($this->_extension);
  11.  
  12. }
  13.  
  14. public function setTemplateDir($dir)
  15. {
  16. $return = CUR_PATH .'/application/views/';
  17. if(strlen($dir) > 0 && $dir[strlen($dir) - 1] != '/')
  18. {
  19. $dir .= '/';
  20. }
  21. if(!is_dir($dir))
  22. {
  23. // throw new RuntimeException('Podany katalog szablonów '.$dir.' jest niedostępny.');
  24. }
  25.  
  26.  
  27. $return .=$dir;
  28. $this->_templateDir = $return;
  29.  
  30. }
  31.  
  32. public function getTemplateDir()
  33. {
  34. return $this->_templateDir;
  35. }
  36.  
  37. public function setExtension($extension)
  38. {
  39. if(!ctype_alnum($extension))
  40. {
  41. throw new DomainException('Nazwa rozszerzenia może zawierać wyłącznie litery i cyfry.');
  42. }
  43. $this->_extension = $extension;
  44. }
  45.  
  46. public function getExtension()
  47. {
  48. return $this->_extension;
  49. }
  50.  
  51. public static function factory($viewName)
  52. {
  53. return new EngineView($viewName);
  54. }
  55. }
  56.  


oraz ta wywołujaca sablon
  1.  
  2. class EngineView extends View
  3. {
  4. private $_template;
  5. private $_path;
  6. private $_data = array();
  7.  
  8.  
  9. public function __construct($template)
  10. {
  11. parent::__construct();
  12. $this->_template = $template;
  13. $path = $this->getTemplateDir();
  14. $path .=$template.'.'.$this->getExtension();
  15.  
  16. if(!file_exists($path))
  17. {
  18. throw new RuntimeException('Określony szablon '.$template.' nie istnieje.');
  19. }
  20.  
  21. $this->_path = $path;
  22. }
  23.  
  24. public function getTemplate()
  25. {
  26. return $this->_template;
  27. }
  28.  
  29. public function __set($name, $value)
  30. {
  31. $this->_data[$name] = $value;
  32. }
  33.  
  34. public function __get($name)
  35. {
  36. return $this->_data;
  37. }
  38.  
  39. public function render()
  40. {
  41. extract($this->_data);
  42.  
  43. require($this->_path);
  44. }
  45. }


bawiłem się trochę tym, ale nie chcę od nowa wynajdywać koła więc szukam może lepszego rozwiązania. No i średnio wiem jak zrobić ten cache. Może ktoś zarzuci jakiś przykład?
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 Aktualny czas: 21.08.2025 - 16:18