=?iso-8859-2?q?System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
WebCM - 21-09-2007 00:03
=?iso-8859-2?q?System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Potrzebuję bardzo szybkiego i wydajnego systemu szablonów. Zastanawiam się, czy pisać własny, czy przerobić istniejący do potrzeb CMS-a.
Funkcje
* Pętle lub wyciąganie fragmentów. Dla przykładu chcę wyświetlić nowości. Ich ilość na stronie zależy od ustawień. Każdy news mainne dane. W jaki sposób najlepiej to zrobić? Podobnie jak podpinanie w PDO?
$tpl = new Template('file.tpl'); $tpl -> add('jakaś_zmienna', 'wartość'); //Albo w tablicy $block = $tpl -> getBlock('news');
foreach($res as $news) { $block -> add(...); //Przypisanie zmiennych $block -> show(); //Jak zorganizować dane w obiekcie? } //Albo inaczej - jak?
Co do organizacji danych - albo zamiany następują dopiero w metodzie show(), albo przetworzone dane przechowywane są w dodatkowej zmiennej (większe zużycie pamięci RAM). Trzeba zwrócić też uwagę na instrukcje warunkowe i inne operacje.
* Zmienne - prawdopodobnie w stylu {zmienna}. Istotną kwestią jest dostęp do innych zmiennych niż przypisane, choć niekonieczną.
* Instrukcje warunkowe - bez tego trudno napisać elastyczne szablony z dostosowaniem wyglądu do ustawień. Jak je zaimplementować? Może podobnie jak w XT?
<div id="jakies_id">zawartość</div>
A w PHP coś w stylu:
$tpl -> if( TRUE, ...); Nie wiem, czy to dobry przykład. W takich blokach znajdują się jeszcze inne zmienne.
A może coś w stylu PHPTal?
<div if="zmienna">...</div>? Na podobnej zasadzie mogą działać pętle.
* Cache - bardzo ważne w celu przyspieszenia skryptu. 2 sposoby: - zapis pliku .tpl do .php bądź innej formy - zapis przetworzonego szablonu do .html (gdy dane rzadko się zmieniają) Jeżeli skrypt dostosowywałby szablony sprawnie, funkcja nie jest konieczna.
Inne bajery są raczej zbędne. Kolejna rzecz - łączny rozmiar podstawowych plików systemu szablonów - maks. 4KB.
Czy opłaca się tworzyć własny system szablonów, czy lepiej wykorzystać już istniejący i dostosować go (np. usunąć zbędne funkcje i instrukcje)? Myślę jeszcze o XT, PHPTal lub podobnych.
chester - 21-09-2007 00:03
WebCM pisze: > Inne bajery są raczej zbędne. Kolejna rzecz - łączny rozmiar > podstawowych plików systemu szablonów - maks. 4KB.
Tzn. biblioteka/system szablonowy ma zajmować 4KB ? Po co takie wymaganie?
> Czy opłaca się tworzyć własny system szablonów, czy lepiej wykorzystać > już istniejący i dostosować go (np. usunąć zbędne funkcje i > instrukcje)? Myślę jeszcze o XT, PHPTal lub podobnych.
Ja bym obciął jakiś istniejący. Tyle tylko, że się zastanawiam, po kiego grzyba takie kombinacje z tym obcinaniem/minimalizacją systemu szablonów? Widziałem testy wydajności w PHP Solutions i mogę uczciwie powiedzieć że są nieco nieobiektywne. A to z tego powodu, że operowały na stosunkowo nieskomplikowanych szablonach. Skompilowany szablon Smarty w który się wrzuca bardzo dużo zmiennych wcale nie jest znacząco wolniejszy niż tak zachwalany PHPTal. Nic nie mam do innych systemów, ale prywatnie: a) lubię smarty. tak po prostu i irracjonalnie ;-) b) cenię sobie prostotę używania - w smarty nie stosujesz czystego 'php' (choć możesz jeśli się pojawi taka potrzeba) i dzięki temu osoba zajmująca się HTML ma znacznie mniejsze szanse coś poważnie spieprzyć
Oczywiście nie znaczy to że to system najwydajniejszy itp - wiem że jest to kobyła, ale jak po zakończeniu testów robisz force_compile na true, to wcale tak źle nie jest, szczególnie przy dużej ilości zmiennych.
chester
the_foe - 22-09-2007 00:16
Kiedys napisalem sobie taki prosty "bez bajer" system:
<?php #najprostszy system szblonow #autor the_foe define ( "KAT_SZAB" , "szablony"); //katalog z szablonami define ( "WSKAZNIK", '$this');//wskaznik klasy np $this funkcje $fun class easy_temp{ var $bufor; var $kat_szab=KAT_SZAB; var $wskaznik=WSKAZNIK; var $war__war=array(); function dodaj_plik($plik) { //dodaje plik do bufora
if (is_array($plik)){ //rekurencja foreach ($plik as $v){ $this->dodaj_plik($v); } }else{ if(!empty($this->kat_szab))$plik=$this->kat_szab."/".$plik; if (is_file($plik)==false){ $this->bufor.="BRAK WSKAZANEGO PLIKU: ".$plik."<br>";; } else { $this->bufor.=implode("",file($plik));
} }
} function pokaz(){ $pat='/{([\w\$\[\]\']*)(\|.*?|)}/se'; $to=preg_replace($pat,"\$this->go('\\1','\\2')",$this->bufor); echo $to; } function go ($a__a,$b__b){ if ($this->wskaznik{0}=='$'){ if ($this->wskaznik!='$this') global ${substr($this->wskaznik,1,strlen($this->wskaznik))}; $w__skaznik=$this->wskaznik."->"; }else{ $w__skaznik=$this->wskaznik."::"; } if (!empty($b__b)){ $b__b=substr($b__b,1,strlen($b__b)-1); $z__z=explode("|",$b__b); $b__b=""; foreach ($z__z as $v__v){ $b__b.=",".$v__v; } $b__b=substr($b__b,1,strlen($b__b)-1); } if ($a__a{0}=='$'){ $a__a=substr($a__a,1,strlen($a__a)-1); if(!empty($this->war__war[$a__a])){ $a__a=$this->war__war[$a__a]; }else{ if ($this->wskaznik{0}=='$')eval('$a__a='.$w__skaznik.$a__a. ';'); } }else{ eval('$a__a='.$w__skaznik.$a__a.'('.$b__b.');'); } return $a__a; } function ustaw($co,$dane=""){ if (is_array($co)){ $this->war__war=$co; }else{ $this->war__war[$co]=$dane; }
} } ?>
Tomasz Sledz - 22-09-2007 00:16
Friday 21 of September 2007 12:10:40 the_foe napisał(a): > Kiedys napisalem sobie taki prosty "bez bajer" system: >
no i ??? W czym problem ???
-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Tomasz Śledź 3d3d5162764e6d4c6a56574c79416b6270786d636c314764 3d7747637538326269426b6270786d636c314764 73426e4c76396d5975345761734a585a7452334c766f446330 524861 -- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.php
WebCM - 23-09-2007 00:00
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Może napiszę podstawowy mechanizm systemu szablonów, na jakiej zasadzie oprzeć "cache" (gdzie są pętle, itd.)?
Co do pętli - rekordy z bazy danych pobieram na bieżąco:
foreach($result as $news) { ... }
Metoda bardzo szybka w przeciwieństwie do buforowania danych i użycia innej pętli.
Smarty i OPT to obszerne skrypty. Można powiedzieć, że implementuje własny język. Podstawowe pliki to ok. 145 KB. Rzecz głównie w tym, że w przypadku szybkiego i lekkiego systemu CMS nie ma potrzeby ładować do pamięci funkcji, które na 98% nie zostaną wykorzystane.
Co do XT - używa funkcji DOM (XML), co pewnie nie jest zbyt szybkie. Ciężko powiedzieć na ten temat, gdy brak testów wydajności. Nie wiem, czy opłaca się przerabiać jakiś skrypt, czy pisać własny system szablonów.
ADi - 24-09-2007 00:09
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Witam,
On 20 Wrz, 20:10, WebCM <webcm...@gmail.com> wrote:
> Potrzebuję bardzo szybkiego i wydajnego systemu szablonów. Zastanawiam > się, czy pisać własny, czy przerobić istniejący do potrzeb CMS-a.
[...]
Wszystko co wymieniles masz w PHP, wiec nie widze powodu dla ktorego mialbys uzywac jakis wymyslnych systemow szablonow, lub pisac wlasne... Wiekszosc osob nie rozumie, ze oddzielenie warstwy biznesowej aplikacji od warstwy widoku (patrz MVC) wcale nie polega na tym, ze w widokach nie mozna uzywac PHP. Przeciwnie, po cholere implementowac Smarty czy inna kobyle, zeby uzyskac funkcjonalnosc, ktora masz domyslnie w PHP? Przeciez to sie nie trzyma kupy...
Jezeli nie rozumiesz za bardzo o co mi chodzi, to zobacz jak to jest domyslnie rozwiazane w Zend Framework: http://framework.zend.com/manual/en/zend.view.html Mozesz tez przeanalizowac system generowania widoku w takim prosciutkim frameworku, ktory znajdziesz tutaj: http://tinymvc.org (klasa TinyMVCViewRenderer).
Wniosek? Najlepszym "jezykiem szablonow" jest PHP. I to by bylo na tyle...
Pozdrawiam,
-- ADi
WebCM - 24-09-2007 00:09
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Dobry system szablonów jest o tyle dobrym rozwiązaniem, że pliki nie zawierają kodu PHP i skomplikowanych instrukcji, co sprawia, że zmiana wyglądu jest łatwe. To nie ma być kobyła. Smarty ma swój język - to nie tak powinno wyglądać. XT już jest bliżej.
Chyba przeprowadzę za chwilę testy szybkości kilku systemów. Co zrobić, by były wiarygodne?
ADi - 24-09-2007 00:09
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
On 23 Wrz, 13:22, WebCM <webcm...@gmail.com> wrote:
> Dobry system szablonów jest o tyle dobrym rozwiązaniem, że pliki nie > zawierają kodu PHP i skomplikowanych instrukcji, co sprawia, że zmiana > wyglądu jest łatwe. To nie ma być kobyła. Smarty ma swój język - to
Chodzi wlasie o to, ze pliki widoku zawierajace kod PHP nie sa niczym zlym i jak najbardziej zgodnym z MVC. A "skomplikowane instrukcje", typu instr. sterujace sa czesto niezbedne i bardzo wygodne, tylko wlasnie po co do tego osobny engine, skoro mamy to w PHP?
Co sie natomiast tyczy latwej zmiany _wygladu_ strony, to nie tedy droga... widoki renderowane przez framework powinny byc uniwersalne, najlepiej jako semantyczny kod (X)HTML, lub po prostu XML. Wyglad w takim wypadku mozesz dowolnie opisac tylko przy pomocy CSS i ewentualnie XSL (w przypadku XML) i kazdy webmaster moze to zrobic palcem nie dotykajac plikow widoku (well.. przynajmniej w teorii;)).
Pozdrawiam,
-- ADi
WebCM - 25-09-2007 00:09
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Jeśli w szablonie z kodem PHP są wstawiane wyłącznie zmienne, nie zmniejsza to zbytnio czytelności. Gdy dojdą instrukcje warunkowe i pętle, wtedy już jest problem - tworzy się syf, z którym grafik może sobie nie poradzić.
Chciałbym, abyście pomogli mi dokonać właściwego wyboru. Autor OPT twierdzi, że w XT uzależniamy kod PHP od budowy kodu HTML. Gdy po zmianie szaty graficznej nie ma ona dokładnie identycznej struktury, jak stara, trzeba ponownie przepisać skrypt. Po części się zgadzam, lecz rozważmy 2 przykłady: - ul > li - odnosimy się do znaczników, które muszą wystąpić - #id, .class - każdemu elementowi możemy nadać te atrybuty
Druga strona odradza stosowania systemów typu Smarty ze względu na pseudojęzyk bądź nieczytelną składnię. http://pornel.net/szablony
Ostatecznie napiszę własny system szablonów z podstawowymi funkcjami, lecz wolałbym sprawdzone rozwiązanie (np. XT, OPT, PHPTal). Najważniejsze, by skrypt był szybki i nie ładował dużo kodu do pamięci.
Bartosz \omnibus\ Derleta - 25-09-2007 00:09
> > Smarty i OPT to obszerne skrypty. Można powiedzieć, że implementuje > własny język. Podstawowe pliki to ok. 145 KB. Rzecz głównie w tym, że > w przypadku szybkiego i lekkiego systemu CMS nie ma potrzeby ładować > do pamięci funkcji, które na 98% nie zostaną wykorzystane. >
Obszerne ale stabilne i dość wydajne, można skroić na miarę potrzeb.
> Co do XT - używa funkcji DOM (XML), co pewnie nie jest zbyt szybkie. > Ciężko powiedzieć na ten temat, gdy brak testów wydajności. Nie wiem, > czy opłaca się przerabiać jakiś skrypt, czy pisać własny system > szablonów.
:/
Mam nieprzyjemne doświadczenia z tym systemem, selektory ssą i tyle, xpatha w ogóle nie czyta, ogólnie żal, nie polecam :/
-- Pozdrawiam, Bartosz "omnibus" Derleta
WebCM - 25-09-2007 00:09
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Która to była wersja XT i PHP?
Plik opt.class.php po zoptymalizowaniu Toolset'em waży ok. 20 KB + inne (np. kompiler - 46,1 KB) - zazwyczaj mniej kodu łącznie ładujędo pamięci. Może po ręcznym wywaleniu zbędnych funkcji różnica będzie zauważalna.
Decyzję muszę podjąć jak najszybciej. Gdzie mogę dorwać autora XT? Już 10 dni nie był na forumweb.pl, a nie chcę pisać do niego na komunikator.
sash668 - 25-09-2007 00:09
WebCM <webcm123@gmail.com> in news:1190658879.931029.278820@22g2000hsm.googlegro ups.com wrote:
> Jeśli w szablonie z kodem PHP są wstawiane wyłącznie zmienne, nie > zmniejsza to zbytnio czytelności. Gdy dojdą instrukcje warunkowe i > pętle, wtedy już jest problem - tworzy się syf, z którym grafik > może sobie nie poradzić.
No właśnie dlatego nie lubię czystego php jako system szablonów mimo, że byłoby to najwydajniejsze.
> [...]
> Druga strona odradza stosowania systemów typu Smarty ze względu na > pseudojęzyk bądź nieczytelną składnię. > http://pornel.net/szablony
W Smarty najbardziej lubię wtyczki, szczególnie te które samemu można napisać ;-). Na upartego link z przykładu porneLa może wyglądać w Smarty tak:
{href params=$params}
lub
{href href=$params.href title=$params.title attributes=$params.attributes}
//do tego oczywiscie dane: $params = array( 'href' => 'http://costam.pl/dupa/ala-ma-psa-kot-zdechl&kanarek', 'title' => 'ala ma psa & <kota>', 'attributes' => array ( 'em', array("span style='border: 1px solid red;'", 'span') ), //'target' => '_blank' );
// i jakieś przypisanie (wedle uznania) $tpl->assign('params', $params);
('target' dodany specjalnie ;-P, za to zostanie odpowiednio "obsłużony" w pluginie jęśli się odkomentuje)
Jednak dalej pozostanie to "zlepiaczką tekstu", ale za to szablon jest dość "czysty". Poza tym, bardzo przyzwyczaiłem się do generowania danych bez formatowania a potem wysyłania tej/tych tablicy/tablic do szablonu a tam już niech się dzieje co chce.
Na szybko pisany plugin do tych linków można znaleźć pod: http://phpfi.com/264860
> Ostatecznie napiszę własny system szablonów z podstawowymi > funkcjami, lecz wolałbym sprawdzone rozwiązanie (np. XT, OPT, > PHPTal). Najważniejsze, by skrypt był szybki i nie ładował dużo > kodu do pamięci.
Sam zasanawiam się nad przesiadką na coś innego właśnie ze tego względu, że Smarty to jakby nie patrzeć kobyła. Myślałem nad wychwalanym przez porneLa PHPTAL tylko martwi mnie to, że ostatnia wersja jest z końca 2k6-11, czyżby porzucony? No i system cache'owania trzeba samemu zrobić.
-- Best regards sash668 na dżimejl dot kom
WebCM - 26-09-2007 00:04
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Prawdopodobnie wszystko, czego potrzebuję, to: wstawianie wartości - {var} i definiowanie fragmentów kodu. Przez "fragmenty kodu" rozumie się m.in.: - instrukcje warunkowe - pętle
Tu wystarczy nawet definiowanie bloków, choć szablony mogą zawierać też inne konstrukcje. PhpBB stosuje komentarze HTML. Też ciekawe rozwiązanie. <!--BEGIN nazwa--> lub (w wersji 3): <!--IF coś_tam-->
Powróćmy do XT. Autor zaprzestał rozwijania wersji z CACHE. Zapewne głównym powodem jest brak czasu. Buforowanie szablonów wg mnie jest możliwe (gdy odwołujemy się przez XPath, ID bądź klasę), lecz znacznie trudniejsze.
Wybierając drogę OPT, zamykam drzwi do XT. Obiekt OPT tworzy się tylko raz. Szablon wczytuje się dopiero po ustawieniu danych do podmiany. Wycinanie fragmentów jest raczej niemożliwe (np. w pętli foreach, o czym pisałem w poprzednich postach). Za to w XT każdy szablon jest obiektem (wczytuje go konstruktor klasy). Muszę przyznać, że ten system ma naprawdę wielkie możliwości - a to przede wszystkim zasługa funkcji DOM w PHP5. :) Pseudojęzykowe systemy mogłyby się schować, gdyby nie fakt, o którym pisał autor OPT w odpowiedzi na komentarz: http://www.zyxist.com/pokaz.php/hackujemy_opt
Atrybuty ID i CLASS można nadać każdemu elementowi. Problem przejawia się jednak w tym, że znaczniki mają swoje atrybuty, np. <a> - href (czego nie ma <input>). Adres odnośnika generuje się w PHP i muszę szablonowi go jakoś przekazać. Znacie inne przykłady?
Najprawdopodobniej napiszę własny system szablonów, wzorując się na XT i OPT. Tylko nie wiem, w którą stronę się kierować (tak by potem nie było problemów z podstawieniem innej klasy, gdyby ktoś chciał większych możliwości). Podstawowe założenia: - używać DOM tylko w czasie kompilacji - zmienne {var}, {title}... - fragmenty - albo jak w PhpBB, albo XML-owo, albo przez #ID
Mam nadzieję, że rozwinie się ciekawa dyskusja i znajdziemy lepsze rozwiązanie. Jak napiszę lekką klasę do obsługi szablonów, udostępnię ją.
marcin.hacia@gmail.com - 27-09-2007 00:09
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
On 24 Wrz, 20:34, WebCM <webcm...@gmail.com> wrote:
> Chciałbym, abyście pomogli mi dokonać właściwego wyboru. Autor OPT > twierdzi, że w XT uzależniamy kod PHP od budowy kodu HTML. Gdy po > zmianie szaty graficznej nie ma ona dokładnie identycznej struktury, > jak stara, trzeba ponownie przepisać skrypt. Po części się zgadzam, > lecz rozważmy 2 przykłady: > - ul > li - odnosimy się do znaczników, które muszą wystąpić > - #id, .class - każdemu elementowi możemy nadać te atrybuty
Zaraz, przecież zwykle zmiana wyglądu dobrze zakodowanej i przemyślanej strony nie wymaga grzebania w (X)HTML, a zmiany CSS. Natomiast jeżeli by wymagała zmian, to raczej kosmetycznych, typu wstawienie dodatkowego div'a (kontener na coś), zamiany listy wypunktowanej na numerowaną lub odwrotnie albo czegoś podobnego...
marcin.hacia@gmail.com - 27-09-2007 00:09
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
On 24 Wrz, 20:56, "Bartosz \"omnibus\" Derleta" <bartosz_derl...@op.pl> wrote:
> Mam nieprzyjemne doświadczenia z tym [XT] systemem, selektory ssą i tyle, > xpatha w ogóle nie czyta, ogólnie żal, nie polecam :/
Bo to jest ciągle wersja rozwojowa. Potrzeba osób znających PHP, które pomogłyby autorowi, ponieważ brakuje mu czasu na zajmowanie się tym systemem. Obsługę xpatha możnaby dodać później (o ile się niemylę jest/była w planach). Selektory ssą? Pewnie dlatego, że nie wszystkie selektory CSS zostały zaimplementowane, pewnie z wyżej wymienionego powodu.
Mógłbyś też bardziej sprecyzować wypowiedź, że selektory ssą? Co konkretnie?
Bartosz \omnibus\ Derleta - 27-09-2007 00:09
marcin.hacia@gmail.com pisze: > On 24 Wrz, 20:56, "Bartosz \"omnibus\" Derleta" > <bartosz_derl...@op.pl> wrote: > >> Mam nieprzyjemne doświadczenia z tym [XT] systemem, selektory ssą i tyle, >> xpatha w ogóle nie czyta, ogólnie żal, nie polecam :/ > > Bo to jest ciągle wersja rozwojowa. Potrzeba osób znających PHP, które > pomogłyby autorowi, ponieważ brakuje mu czasu na zajmowanie się tym > systemem. Obsługę xpatha możnaby dodać później (o ile się nie mylę > jest/była w planach). Selektory ssą? Pewnie dlatego, że nie wszystkie > selektory CSS zostały zaimplementowane, pewnie z wyżej wymienionego > powodu. > > Mógłbyś też bardziej sprecyzować wypowiedź, że selektory ssą? Co > konkretnie? >
Tak, niby proste zapytanie "#contentElement". Po zmianie id elementu na content, zapytanie zaskoczyło.
-- Pozdrawiam, Bartosz "omnibus" Derleta
neo - 29-09-2007 00:00
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
On 26 Wrz, 18:01, "Bartosz \"omnibus\" Derleta" <bartosz_derl...@op.pl> wrote: > marcin.ha...@gmail.com pisze: > > > > > On 24 Wrz, 20:56, "Bartosz \"omnibus\" Derleta" > > <bartosz_derl...@op.pl> wrote: > > >> Mam nieprzyjemne doświadczenia z tym [XT] systemem, selektory ssą i tyle, > >> xpatha w ogóle nie czyta, ogólnie żal, nie polecam :/ > > > Bo to jest ciągle wersja rozwojowa. Potrzeba osób znających PHP, które > > pomogłyby autorowi, ponieważ brakuje mu czasu na zajmowanie się tym > > systemem. Obsługę xpatha możnaby dodać później (o ile sięnie mylę > > jest/była w planach). Selektory ssą? Pewnie dlatego, że nie wszystkie > > selektory CSS zostały zaimplementowane, pewnie z wyżej wymienionego > > powodu. > > > Mógłbyś też bardziej sprecyzować wypowiedź, że selektory ssą? Co > > konkretnie? > > Tak, niby proste zapytanie "#contentElement". Po zmianie id elementu na > content, zapytanie zaskoczyło. > > -- > Pozdrawiam, > Bartosz "omnibus" Derleta
Bardzo ułatwilibyście mi jakiś rozwój xt, gdyby ewentualne problemy były kierowane bezpośrednio do mnie. Starałem się utrzymać pełną kompatybilność z css3 i wedle moich testów wszystko powinno działać. Jednak, oczywiście, jestem człowiekiem i również popełniał błędy. Zatem jeśli znajdziecie jakieś problemy z selektorami proszę o bezpośredni kontakt, np. via email.
Co do obsługi xpath - jest przecież wbudowana w php. Zresztą wyszukiawnie selektorów via css3 jest tak de facto tłumaczeniem css3 na xpath za pomocą kilku wyrażeń regularnych.
Co do samej dyskusji wtrącać się nie będę, bo z założenia jestem stronniczy ;-)
Pozdrawiam, Tomasz `neo` Kołodziejski
WebCM - 30-09-2007 00:00
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Odświeżam temat. Wciąż nie wiem, które założenie wybrać. :)W XT nie ma bałaganu:
<ul id="dodaj"> <li class="art remove_class" /> <li class="file remove_class" /> </ul>
Potem: jeśli #dodaj.art ma istnieć, podstawiam tekst. Powiedzmy, że #dodaj.file trzeba usunąć, bo użytkownik nie ma tam dostępu - w XT chyba da się to zrobić. Jest jednak wyjątek - do elementu <li> wsadzamy gotowy odnośnik:
$szablon -> add('#dodaj.art', '<a href="...t">'.$lang['art'].'</a>');
Jeśli chcemy całkowicie oddzielić kod PHP od HTML, musimy się pokusić o dodatkowe rozwiązania. Najpopularniejszym są wstawki:
<li id="art"><a href="{url}">{lang_art}</a></li>
Do tego dochodzą sekcje. Mogę to zrobić tak jak w XT (dostęp do elementu przez ID) albo inaczej:
<section id="nazwa">...</section>
<!--SECTION nazwa-->...<!--END nazwa-->
<li tpl:if="zmienna">Zostanie usunięty</li>
$szablon -> add('zmienna', false);
W tym ostatnim przypadku albo wyszukuję wszystkie atrybuty tpl:if (lub: if), albo tylko zdefiniowane. Jednak to nie jest do definicji sekcji, tylko instrukcji warunkowej.
Jakie są wasze koncepcje na dobry system szablonów, aby wszystko było czytelne, łatwe w tworzeniu dla użytkowników (webmasterów)? Zgodność z XML też jest dużym plusem, choć niekoniecznym, jeżeli analizator przetworzy dane prawidłowo.
PS. Fragmenty są bardzo ważne. Nie chcę dołączać 10 plików dla poszczególnych elementów (np. podkategorie, bloki menu, itp.), a w przypadku pętli wolę wysyłać dane (np. newsy) do przeglądarki na bieżąco (przy każdej iteracji).
WebCM - 18-10-2007 00:03
=?iso-8859-2?q?Re:_System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
Jest tu jeszcze kto? Spójrzcie tutaj: http://www.sitepoint.com/forums/showthread.php?t=507033
Prawie wszyscy zalecają stosowanie PHP jako języka szablonów. Posunąłem się do innego rozwiązania, które zakłada utworzenie interfejsu w panelu administracyjnym CMS-a, w którym można ponownie skompilować pliki stylów lub zainstalować skórkę ściągniętą z internetu (rozpowszechniane byłyby bez kodu PHP - do kompilacji).
Gdy poddałem pod wątpliwość inny problem (funkcje vs dodatkowe pętle w szablonie), zaczęto proponować jeszcze inne rozwiązania (dodatkowy plik). Tego na pewno nie zastosuję. http://www.sitepoint.com/forums/show...0&postcount=18
Na razie zostaję przy szablonach z kodem PHP oraz wersjach przyjaznych webmasterom i grafikom (także rozpowszechnianych), które będą kompilowane / instalowane w panelu administracyjnym. Zalety też są: sprawdzenie nowych wersji, itp. Wciąż mam wątpliwości, czy w niektórych przypadkach bezpośrednie użycie systemu szablonów (np. w newsach, komentarzach) z wycinaniem fragmentów nie jest lepszym i nawet wydajniejszym rozwiązaniem (przy użyciu funkcji DOM).
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
=?iso-8859-2?q?Co_oznacza_b=B3=B1d_Warning:_mysql=5Fconnect() _[function.mysql-connect]:_Can't_connect_to_local_MySQL_server_through_sock et_'/var/run/mysqld/mysqld.sock'_(2)_in?=
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
=?iso-8859-2?q?Ati_Mobility_Radeon_X300_W_Notebooku_Jak_Zwi=E Akszy=E6_Ilo=B6=E6_Grafiki_Poprzez_Wsp=F3=B3dziele nie_Z_Ramu=3F=3F=3F?=
=?ISO-8859-2?Q?=AFegnam_si=EA=2E=2E=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|