Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dlaczego Smarty?
Forum PHP.pl > Inne > Hydepark
DEXTER_c
Do dziś po prostu ustawiam zmienne i includuje szablon, który może wyglądać mniej więcej tak:
  1. <?php
  2. $this->HTML = '
  3.  <h3>'.$title.'</h3>
  4.  <p>'.$tekst.'</p>
  5. ';
  6. ?>


Tak więc mam oddzieloną prezentację od kodu.

Bardzo proszę o wyjaśnienie mi, na czym skorzystam decydując się na zastosowanie Smarty? Interesuje mnie głównie wydajność.
DeyV
Na wydajności NIE zyskasz.

Smarty służy do podniesienia wygody pracy z szablonami, łatwiejszej kontroli tego co się dzieje z designem, oraz jakie dane do niego trafiają, oraz ułatwia tworzenie Cache.

Dzięki temu znacznie łatwiejsze jest odnalezienie wszystkich miejsc, w którym masz kod HTML, przeprowadzenie korekt na nim, a nawet, przynajmniej czasem, edycja wyglądu strony w programach WYSIWG.

Dzięki temu uzyskujesz też pełne rozdzielenie kodu HTML od php.
mike
Przenoszę z Przedszkola na Hydepark.

P.S.
Cytat
Tak więc mam oddzieloną prezentację od kodu.
To nie jest żadne oddzielenie logiki od wyglądu.
To jest zaszycie wyglądu w logice.
SHiP
Przykłady;
- W twojej metodzie przed każdym apostrofem musisz umieszczać backslash. Czy to jest wygodne?
- tworząc nową pętle po tablicy musisz tworzyć nowe zmienne pamietać o indexach etc. Przy uzyciu parsera szablonow nie ma tego problemu, wiekszosc dziwnego kodu generuje parser.
...i wiele wiele innych
Speedy
Przedstawiony przez Ciebie przykład jest bardzo trywialny. Czasem jest potrzeba załadowania danych w specyficzny sposób, który spowoduje już problem w oddzieleniu logiki aplikacji od kodu html w Twoim rozwiązaniu. Np. generowanie formularzy, wstawianie warunków do szablonu, operacje na ciągach znaków etc.
darektbg
Witam !
Smarty ma sporo zalet, ale wg. mnie jeszcze więcej wad:
- dosyć powolny
- niezbyt łatwo rozszerzalny
- wymaga od użytkownika opanowania nowej składni.

O ile 2 i 3 powód można w pewnym sensie pominąć, to pierwszy co do szybkość, jak dla mnie w pełni przekreśla Smarty.

Pozdrawiam
Darektbg
Sh4dow
Cytat(darektbg @ 20.12.2006, 15:04:04 ) *
Witam !
Smarty ma sporo zalet, ale wg. mnie jeszcze więcej wad:
- dosyć powolny
- niezbyt łatwo rozszerzalny
- wymaga od użytkownika opanowania nowej składni.

O ile 2 i 3 powód można w pewnym sensie pominąć, to pierwszy co do szybkość, jak dla mnie w pełni przekreśla Smarty.

Pozdrawiam
Darektbg

Wolny ? No chyba jaja se robisz ? Nie wiem ile pracujesz ze smarty ale ja go uzywam chyba juz od ponad 2 lat ? chociaz nie wiem dokladnie. Jak na razie nie moge stwierdzic ze jest wolny. Jest właśnie dość wydajny, a do tego podaje do reki narzedzie zwane cache, co przyspiesza i to duzo bardziej niz by ci sie wydawało.
Co do zalet ?
Jeden kod logiczny i zupelnie rozne szablony i nie mowie tylko o html, ale mozesz stworzyc xml, wap, xul i co ci sie zyw nie podoba. Na upartego jak stworzysz odpowiednie szablony oraz pluginy z filtrami to i pdf'a wygenerujesz (jako tako).
Opanowanie nowej składni .... hmmm no tutaj to nie wiem co odpowiedziec. Załapałem ja w jakies 15-30 minut.
Nie rozszerzalny? no tego to juz nie skomentuje bo bzdur nie powinno sie komentowac.
ikioloak
Zgoda, nauka skladni smarty nie stanowy problemu, jednak czy tak na prawde jest to potrzebne? Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css. Sklaniam sie ostatnio ku rozwiazaniom stosowanym w Symfony i CI, czyli uzycie skladni alternatywnej.
Systemem o podobnym interfejsie do Smarty jest Savant ktory opiera sie wlasnie na skladni alternatywnej. Brakuje mu tylko mechanizmu cache'owania.
skowron-line
Kod
Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css.


no nie wydaje mi sie wystarczy go upchnac w odpowiednie znaczniki i po sprawie
darektbg
Witam !

Cytat(Sh4dow @ 20.12.2006, 15:53:06 ) *
Wolny ? No chyba jaja se robisz ?


Wolny w porównaniu np. z systemem Savant
Smarty przy jednoczesnej liczbie zapytań - 100 i szablonie skompilowanym wcześniej generuje w ciągu sekundy 16,76 strony zaś savant 24,81.
Specjalnie podałem wynik dla szablonu skompilowanego wcześniej, a wiadomo czas się zwiększa w przypadku szablonu nie skompilowanego wcześniej.

Pozdrawiam
Darektbg
ikioloak
Cytat(skowron-line @ 20.12.2006, 21:04:36 ) *
Kod
Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css.


no nie wydaje mi sie wystarczy go upchnac w odpowiednie znaczniki i po sprawie

komplikuje sie gdy odwolujesz sie w kodzie js do zmiennych wygenerowanych przez Smarty.
W zasadzie caly problem rozbija sie o skladnie Smarty. Bo sama idea, interfejs, cache itp. jest swietnie przemsyslane. Ale czy potrzebny jest do tego minijezyk, ktory jest nastepnie parsowany i tak przez php? Zwlaszcza ze ten minijezyk duzo nie wnosi.
NuLL
Cytat
Zwlaszcza ze ten minijezyk duzo nie wnosi.

Dla mnie kazdorazowe pisanie
  1. <?php echo $zmienna; ?>
zamiast
  1. {$zmienna}
jest delikatnie mowiac wkurzajace...
ikioloak
Jasne Null, tu sie zgodze, ale zazwyczaj mozna uzywac short_tagow, a
  1. <?=$zmienna;?>

juz nie jest takie zle. Jak pisalem wczesniej - ja sie do Smarty zrazilem strasznie po przejsciach ze Smarty+JS. Tak samo jakies niescislosci byly przy dostepie do danych z wielowymiarowych tablic asocjacyjnych, gdzie kluczem jednej tablicy byla wartosc innej itp.
NuLL
Cytat
zazwyczaj mozna uzywac short_tagow

Short_tagi nie sa zalecane.
Cytat
Jak pisalem wczesniej - ja sie do Smarty zrazilem strasznie po przejsciach ze Smarty+JS. Tak samo jakies niescislosci byly przy dostepie do danych z wielowymiarowych tablic asocjacyjnych, gdzie kluczem jednej tablicy byla wartosc innej itp.

Powiem jak szczerze - wyglada to jak bzdura wymyslona podczas pisania tego tekstu.
ikioloak
Ok byc moze jest bzdura. Pokaz mi w takim razie w jaki sposob w templatce Smarty zamieszczasz kod JS w ktorym sa znow odwolania do kodu Smarty. Nie uwazam ze sie 'nie da' - bo wiem ze sie da, tylko wg mnie malo elegancko. Wiec pokaz jak ty takie 'bzdurne' problemy rozwiazujesz.

A co do tablic.
  1. <?php
  2. $arr1 = array('klucz1' => array('kkklucz1' => 'wartosc1'), 'klucz2' => 'wartosc2', 'klucz3' => 'wartosc3');
  3. $arr2 = array('kklucz1' => 'klucz1', 'kklucz2' => array('klucz2' => 'wartosc4', 'klucz4' => 'klucz3'), 'kklucz3' => 'klucz3');
  4. ?>


Czyli po wyrzuceniu print_r, kolejno arr1 i arr2
Kod
Array
(
    [klucz1] => Array
        (
            [kkklucz1] => wartosc1
        )

    [klucz2] => wartosc2
    [klucz3] => wartosc3
)
Array
(
    [kklucz1] => klucz1
    [kklucz2] => Array
        (
            [klucz2] => wartosc4
            [klucz4] => klucz3
        )

    [kklucz3] => klucz3
)


Jak jaki sposob zapisujesz w Smarty odpowiednik:
  1. <?php
  2. $arr1[$arr2['kklucz2']['klucz4']];
  3. ?>
Ace
zawsze masz dostep do {assign var="..." value=$cos.klucz} ... w ten sposob mozna obejsc twoj problem, to akurat jest jedna z niewielu wad smarty. Mowicie o szybkosci smarty, a zaloze sie ze malo z was pisze systemy ktore musza obslugiwac duzy ruch. Poza tym to tylko wyglad. Zle napisany kod aplikacji, zle zaprojektowany model danych mysle ze jest wazniejszy niz generowanie wygladu z tych danych.

zawsze mozna okroic smarty z niektorych funkcji, wtedy bedzie dzialal szybciej, bo on chyba laduje wszystkie pluginy za kazdym razem jak sie strona wczyta.

nie wyobrazam sobie pisania aplikacji webowych bez systemu szablonow jakim jest smarty. Moge w php, ale po co.
pisac <? echo "..."; ?> mowicie ze z js sa problemy - bzdura...

{literal}
<script>
function test()
{
alert( 'test' );
}
</script>
{/literal}
chwyci bez problemu. a to i tak jest kompilowane do kodu php.
Speedy
Większość opisanych tutaj problemów, to niuanse, które występują w specyficznych sytuacjach. Sam napotykałem pewne przeciwności podczas użytkowania Smarty, a wykorzystuję go dość intensywnie w swoich projektach. Niemniej jednak da się je zawsze w jakiś sposób rozwiązać, a typowe konstrukcje tworzy się w tym systemie bez problemu.
Fakt, że trzeba poznać składnię Smarty, aby móc z niego korzystać, lecz nie wydaje mi się, żeby był to wielki problem zwłaszcza, że jest ona dość intuicyjna, a manual jest przygotowany dobrze i zawsze można do niego, w razie ewentualnych niepewności, zajrzeć.
Nieprawdą jest, że Smarty jest wolne. Jest szybkie i dobrze sprawuje się podczas pracy, o czym przekonałem się na własnej skórze (w jednym ze stworzonych przeze mnie serwisów, mającym niecałe 600 unikalnych wejść na dzień, działa bez problemu).
ikioloak
Chyba nikogo nikomu przekonac sie nie da. Ze smarty pracowalem dosyc sporo czasu, i mimo ze zdaje sobie sprawe z tego ze nie znam wszystkich ich sztuczek i kruczkow to ostatnio coraz bardziej zauwazam ich wady.

@Ace, akurat twoj przyklad js jest trywialny. Napisalem:
Cytat
Pokaz mi w takim razie w jaki sposob w templatce Smarty zamieszczasz kod JS w ktorym sa znow odwolania do kodu Smarty.


I jak wtedy postepujesz?
Kod
{literal}
<script>
function test()
{
alert( '{/literal}{$zmienna}{literal}' );
}
</script>
{/literal}

Beznadzieja prawda?
Czy zmieniasz delimitery? Przyklad z dokumentacji:
  1. <?php
  2. $smarty->left_delimiter = '<!--{';
  3. $smarty->right_delimiter = '}-->';
  4. ?>

Kod
Welcome <!--{$name}--> to Smarty

i cala przyjemnosc uzywania {$zmienna} umiera. Jak wiec obchodzisz ten problem?

Tak, to sa niusanse, tylko czasem na prawde mocno ityrujace.
DeyV
Ale jeśli już tak na to patrzeć - znam ludzi, którzy na co dzień używają delimitera {* *} - nadal ładny i szybki, a znaczniki komentowania w smarty zmieniają na podobne do tych, które podałeś.
Ace
@ikioloak: dokladnie tak robie, i w niczym mi to nie przeszkadza. Ile masz takich przypadkow gdzie musisz wstawic zmienna w kod js? ile?

wywolanie funkcji przy onclick

<a href="..." onclick="funkcja({$intPageId},{$intArticleId});">...

w czym problem?

problem pojawia sie gdy chcesz w funkcji wstawic zmienna... Ale czemu? Mozesz jap rzeciez globalnie przeniesc, albo jako parametr
<script>
var liczba = {$intArticleId};

{literal}
function robcos()
{
alert( liczba );
}
{/literal}
</script>

W czym problem?
ikioloak
Problem jest kiedy masz formularz generowany dynamicznie i trzeba walidowac w js. Ja akurat sie z tym problemem spotykalem dosyc czesto, pozniej tez stworzylem metody na obchodzenie tego i jakos dalo sie programowac. Pytanie tylko czy te wszystkie obejscia sa potrzebne. Czy warto je stosowac tylko dlatego zeby nie pisac
<?=$zmienna?> lub <?php echo $zmienna ?>
Sh4dow
Niewykorzystujac całej mocy jaka posiada smarty to rzeczywiscie korzystajcie ze składni "<?php=$zmienna; ?>"
Szczerze mówiąc mi to "zwisa", to wy macie problem nie ja. Mówicie o generowanym dynamicznie JS'ie. No OK po pierwsze większość kodu JS czy CSS powinno się dołączać w osobnym, pliku, który defakto także można generować przecież.
Po drugie pytanie jest ile udało wam się stworzyć plugin'ów dla Smarty z których z chęcią korzystacie i przydają wam się w pracy, przyspieszając tworzenie projektów ? Ja osobiście korzystam z trzech podstawowych. Generowanie pól pormularza, tłumaczenie, generator linków.
Mówicie o dziwnych zagnieżdżeniach pętli o kluczach tablic itd. No przykro mi, jesli sami sobie komplikujecie prezentacje danych to macie pretensje do systemu szablonów ?
Pracowaliście kiedyś z drugą osobą jaką jest grafik/html'owiec ? Jakos składnia smarty jakoś mu nie oprzeszkadza i jest w miare prosta. Nie uczył się programowac.
Ciekawi mnie jeszcze jedno, czy piszac wszystko poprzez echo, masz napewno wydajniejszą aplikacje ? I jak tam ze zmianą prezentacji danych ? Powiedzmy zmiana layout'u albo prezentacja jako XML lub WAP ? Zapewne przyjemne.
Jesli chodzi o inne systemy szablonów, to naprzykład taki szablon
  1. <html>
  2. <?php include $this->findTemplate('header.tpl.php'); ?>
  3.  
  4. <p>the rest of my page</p>
  5.  
  6. <?php include $this->findTemplate('footer.tpl.php'); ?>
  7. </html>

Jest zapewne bardzo przystepny dla grafika.
DEXTER_c
Czy mógłby mi ktoś wyjaśnić na jakiej zasadzie działa buforowanie w Smarty?

Jak już wspominałem, głównie dla mnie liczy się wydajność. Teraz stosuję buforowanie całych stron, sprawdzam czy strony o danym adresie nie ma w buforze i wyświetlam. Jeśli Smarty wyświetla dane z bufora gdy zmienne podane do szablonu są takie same jak ostatnio, to chyba nie jest to za szybkie rozwiązanie?
Ace
w manualu masz to raczej dokladnie opisane...

http://smarty.php.net/manual/en/caching.php
DEXTER_c
Cytat(Ace @ 22.12.2006, 11:22:27 ) *
w manualu masz to raczej dokladnie opisane...

http://smarty.php.net/manual/en/caching.php


Mi raczej chodziło o buforowanie - ale nie widzę go w manualu, więc pewnie nie ma smile.gif
envp
A czemu nie szablony php? Bo chyba o to autorowi tematu chodziło ?

  1. <?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  4. <head>
  5. <title><?php echo $this->title; ?></title>
  6. <meta name="generator" content="Kate,Linux Kubuntu :)"/>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  8. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
  9. <meta http-equiv="Content-Style-Type" content="text/css"/>
  10. <?php
  11. /*if you want to use NyssNiceForms you have to load JS and CSS */
  12. $this->_addJavaScript(NiceFormHelper::getJSPath());
  13. $this->_addStyleSheet(NiceFormHelper::getCSSPath());
  14. ?>
  15. <?
  16. $aJavaScripts = $this->javascripts;
  17. for($i = 0; $i < count($aJavaScripts); $i++)
  18. echo '<script language="javascript" type="text/javascript" src="'.$aJavaScripts[$i].'"></script>'."n";
  19. ?>
  20.  
  21. <style type="text/css" media="screen">
  22. <?php
  23. $aStyleSheets = $this->stylesheets;
  24. for($i = 0; $i < count($aStyleSheets); $i++)
  25. echo '@import url(' . $aStyleSheets[$i] . ');' . "n";
  26. ?>
  27. </style>
  28.  
  29. </head>
  30. <body>
  31. <div id="top"><img src="<?=$this->UrlHelper();?>/app/templates/images/nyss.jpg" />
  32. </div>
  33.  
  34. <table class="main">
  35. <tr>
  36. <td class="menu" valign="top">
  37. <br/>
  38.  <?=$this->loadApplet('MenuModules','Offers');?><br/><br/>
  39.  <?=$this->loadApplet('MenuModules','YourAccount');?>
  40. </td>
  41.  
  42. <td class="container" valign="top"><br />
  43. <table id="main">
  44.  <tr>
  45. <td class="roundc"><img src="<?=$this->UrlHelper();?>/app/templates/images/roundl.gif" /></td>
  46. <td class="mainhead"><?=$this->head?></td>
  47. <td class="roundc"><img src="<?=$this->UrlHelper();?>/app/templates/images/roundr.gif" /></td>
  48.  </tr>
  49.  <tr>
  50. <td colspan ="3" class="content" valign="top">
  51. <div class="margined"><?php echo $this->subtemplate; ?></div>
  52. </td>
  53.  </tr>
  54. </table>
  55. </td>
  56.  
  57. </tr>
  58. </table>
  59. <br />
  60. <br />
  61. <div id="footer">Content Managment System powered by Nyss Framework, coded by envp (kamil@linux.pl) <a href="http://envp.ovh.org</div>" target="_blank">http://envp.ovh.org</div></a>
  62. </body>
  63. </html>
Cysiaczek
Przyznam, ze obcowałem ze Smarty bardzo krótko, właściwie to tylko mu się przyjrzałem i popróbowałem. Najbardziej śmieszy mnie składnia, a dokładniej pętle i warunki. O ile jeszcze pętle zrozumiem, o tyle "ifelsy" to śmiech na sali. Nie wydaje się wam, że wiele osób zastępuje smartami logikę aplikacji? To w logice mają zostać wybrane dane, które będą zaprezentowane, nie w szablonie smarty. Owszem, zależy to też od stylu programisty. Obecnie jestem na etapie projektowania widoków do hobbystycznego miniframeworka. Planuję, że będzie można użyć dowolnego mechanizmu generowania stron, ale rozwiązanie domyślne robię tak, aby użycie smarty wydało się śmieszne. Ogólna idea jest taka, że każda akcja składa się z kilku podakcji, które generują jakieś dane. Następnie specjalna klasa wybiera dla tych danych (skojarzonych z akcją) templaty, czyli małe pliki z html'em i składa je w jedna stronę www. Do tego
ślicznie wybiera sobie headery, stopki, dołącza JS i CSS'y. Żadnych instrukcji warunkowych nie zauważyłem w żadnym templacie (jedynie pętle). Gdybym jeszcze dodatkowo upakował tam smarty, to aplikacja byłaby żółwiem, jeśli nie (o zgrozo!) ślimakiem, a zysk byłby żaden.
Umieszczanie bibliotek JS w templatach też jest z mojego punktu widzenia nonsensem. To powinno być generowane (wybierane przez system), zwłaszcza, jeśli zamierzany używać AJAX'a.


Pozdrawiam.
DEXTER_c
Cytat(envp @ 22.12.2006, 12:45:31 ) *
A czemu nie szablony php? Bo chyba o to autorowi tematu chodziło ?


Jest to podobna technika do tej, co obecnie stosuję, ale moja jest lepsza, bo dzięki niej mogę załadować do zmiennej kilka elementów (np. linków menu), a potem wstawić tę zmienną do szablonu zawierającego menu.
ikioloak
Ciekawa opcja wydaja sie tez PHPTAL. Testowaliscie jak sie sprawdzaja?
Ace
W smarty podoba mi sie też to, że tworze sklep internetowy, dopisuje odpowiednie moduły - daje cynk grafikowi, on wchodzi na szablony i załatwia za mnie wszystko - podpina nowy wygląd, z roboczego na taki jaki klient chce. Często taki pseudo kod jest łatwiejszy do zrozumienia niż kod php.

EOT jak dla mnie
envp
@ DEXTER_c Przeciez ja tez mogę wrzucić kilka elementów do zmiennej, do tego "parser" tego widoku obsługuje tzw. Helpery i Applety, co pozwala mi np zrobić menu czy licznik jako Applet i umieścić np, na tych podstronach na których zechce ;]
Sh4dow
Cytat(DEXTER_c @ 22.12.2006, 11:58:18 ) *
Mi raczej chodziło o buforowanie - ale nie widzę go w manualu, więc pewnie nie ma smile.gif

Wytłumacz o co ci chodziło z buforowaniem, ja mówiłem o cache'owaniu a nie o buforowaniu. Bufor masz w php lub apache ( lub innym serwerze http). Pamiętaj, ze smarty jest przystosowane do tego aby użytkownik mógł je dostosować do własnych potrzeb. Cache możesz wykorzystać wbudowane w smarty, ale także możesz stworzyć swoje i na jego podstawie zwiększyć wydajność.
A odpowiadając na pytanie dlaczego smarty ?
  • php.net wspiera projekt, wiec dba się o bezpieczeństwo oraz kompatybilność z różnymi wersjami php.
  • nie bez przyczyny wiele projektów wykorzystuje smarty a nie inny system szablonów.
  • można dostosować do swoich potrzeb, zarówno funkcje, bloki, filtry wyjścia
  • składnia stała się pewnym standardem, dość łatwa dla dobrego grefika/HTML'owca.
  • Ma dość dobrą dokumentację
  • Nie jest tak wolny jak mogło by się to wydawać (zbudowany cache z dynamicznymi blokami)

Można by doszukać się innych zalet, pewnie co niektórzy będą się doszukiwać wad, i na siłę je znajdą i nie będą używać Smarty, ale to już ich sprawa.
Pracowałem z wieloma projektami, połowa z nich to projekty wymagające wysokiej wydajności i przy wszystkich wykorzystywałem Smarty.
Jak na razie, nie znany mi jest drugi, podobny i łatwy w obsłudze system szablonów, który jest publicznie oddany do wykorzystania. To na tyle guitar.gif
Denver
Cytat(Sh4dow @ 27.12.2006, 14:20:14 ) *
Jak na razie, nie znany mi jest drugi, podobny i łatwy w obsłudze system szablonów, który jest publicznie oddany do wykorzystania. To na tyle guitar.gif

Open Power Template - korzystam z powodzeniem, a z testów autora wynika, że jest szybszy od Smarty'ego.
bełdzio
Cytat(Cysiaczek @ 22.12.2006, 15:27:56 ) *
O ile jeszcze pętle zrozumiem, o tyle "ifelsy" to śmiech na sali. Nie wydaje się wam, że wiele osób zastępuje smartami logikę aplikacji?


Kod
<p style="color: {if $cos eq 1} red {else} green {/if}">ble ble ble</p>


nom śmiech na sali powinno się to zrobić spod php ...
Cysiaczek
ehh. Zauważ, ze wiele osób stosuje te ifelsy do bardziej skomplikowanych zadań - do testowania zmiennych logiki. Twój przykład jest jak najbardziej do przyjęcia, ale zważ, że można to z powodzeniem zrobić przez
  1. <p style="color: <?php print $color; ?>">ble ble ble</p>

a testowanie ciut wyżej - w logice widoku (ja taką wyróżniam dla bardziej skomplikowanych). Nawet, jeśli uznamy, że Twoje rozwiązanie jest lepsze, to czy dla takiej pierdoły mam pakować do systemu Smarty...

Pozdrawiam.
Denver
Cysiaczek: dlaczego zmienną $color ustawiasz w skrypcie php? Szablony powstały m.in. po to, aby grafik, z którym współpracujesz, mógł zmienić kolor tego akapitu własnoręcznie, mając dostęp tylko i wyłącznie do szablonu, bo na php nie musi się znać w ogóle.
Cysiaczek
Idąc dalej tokiem tego rozumowania, to tak: programista php, javascript, html'owiec, stylowiec i grafik tak? No bez jaj. Uczepie się tylko JS - jak na stronie jest ustawiany kolor przez skrypt JS, to też grafik nie musi się znać na tym języku? Wszystko jest kwestią umowy, zatem jeśli powiesz grafikowi, że kolorki może sobie zmieniać np. w pliku .ini, to chyba nie będzie dla niego problemem? Ba. Wydaje mi się, że nawet sporym ułatwieniem. Zresztą, od tego są CSS'y, aby było jak najmniej kodu. Poza tym, powiedz mi za co odpowiada $cos przedstawiona przez bełdzio? Tak, czy siak musisz grafika poinformować o znaczeniu tej zmiennej. Po prostu istnieje pewien punkt styku, gdzie trzeba iść na jakiś kompromis pomiędzy łatwością użytkowania kodu przez html'owca, a poziomem jego komplikacji. Nikt mi nie powie, że rozumiejąc składnię Smarty, grafik nie zrozumie działania prostej pętli while, czy instrukcji warunkowej i zmiennych tam zawartych... musiałby być wyjątkowym... niedokończę.

Pozdrawiam.
Sh4dow
Cytat(Denver @ 27.12.2006, 12:53:46 ) *
Open Power Template - korzystam z powodzeniem, a z testów autora wynika, że jest szybszy od Smarty'ego.

Możliwe że szybszy. W szale pisania alternatywy dla forum IPB jako podajże OpenPower Board powstał taki właśnie system szablonów. W sumie jak popatrzy się na przykłady niewiele różni się od Smarty. Powiedzmy ze pomysł zaciągnięty i przepisany na nowo. Miało być chyba PHP5. Pierwsza sprawa jest taka, support jakiś jest bo widziałem bugtrace'ra, ale czy to wystarcza ?
Nie neguje tutaj czy to jest dobry czy zły system szablonów ale jest mało znany a rozbudowa, z tego co przeglądnąłem stronę brakuje mi bardzo własnych rozszerzeń do rozbudowy.

Cysiaczek, jeśli ty definiujesz w php jaki kolor ma mieć czcionka to raczej pozostawia to trochę do życzenia. Zresztą pomyśl, czy ty winisz system za możliwość korzystania z prostych warunków czy winisz ludzi którzy przez swoją niewiedze nie potrafią programować z głową. Większość (nie mowie ze wszystkie) błędy/problemy raczej wynikają z niewiedzy lub lenistwa w poszukiwaniu odpowiedzi.

No bo co pozostaje, chyba tylko pozostaje mi się zgodzić że
echo 'Hello word!';
jest szybsze od wyświetlenia tego w smarty. Ale wyższość takiego założenia chyba pozostawię wam do przemyślenia.
Cysiaczek
@Sh4dow - oczywiście winię ludzi : ). Nie mam nic do Smarty, po prostu ta konwencja mi nie odpowiada i tyle.

Pozdrawiam.
Denver
@Cysiaczek:
Nigdzie nie napisałem, że podczas pracy nad danym skryptem korzystającym z systemu szablonów powinien być podział na osobę programującą w php, następnie na znawcę JS, później grafika itd. Zgodzę się, że grafik powinien znać zupełne podstawy programowania, np. jak działa pętla, oraz co to jest konstrukcja if...else. Nie zmienia to jednak faktu, że wglądu do właściwego kodu php mieć nie powinien - bo po co? Od kodowania jest programista php, który grafikowi ma tylko i wyłącznie przekazać informacje o tym, co zawiera zmienna przekazana do szablonu i narzucić mu z góry jej użycie.

Odnośnie kodu bełdzia ze zmienną $cos - oczywistym jest dla mnie, że był to najzwyklejszy przykład, wiadomo przecież, że w żadnym porządnym skrypcie nie będziemy tworzyć zmiennych $bleble, $something itd.

Dużo trafniejszy przykład wyglądałby tak:
  1. <p class="<?php print $sNewsParagraphClass; ?>">ble ble ble</p>


W tym momencie grafik zagląda do pliku CSS i tam przeprowadza wszelkie niezbędne modyfikacje kolorów lub czegokolwiek innego.

Tak moim zdaniem powinna współpraca między programistą i grafikiem wyglądać.
WereWolf
Cytat(Denver @ 28.12.2006, 13:00:41 ) *
Zgodzę się, że grafik powinien znać zupełne podstawy programowania, np. jak działa pętla, oraz co to jest konstrukcja if...else.

a ja się nie zgodzę...
po co grafikowi znajomość pętli, instrukcji warunkowych itp.? no chyba, że jako grafika masz na myśli osobę zajmującą się grafiką i cssem/htmlem
Cysiaczek
Myślę, że mówiąc "grafik", wszyscy mamy na myśli osobę odpowiedzialną za wizualny wygląd witryny www - kogoś, kto bezpośrednio wpływa na to, gdzie co umieścić i jakie ma to kolorki

Pozdrawiam.
Denver
Jak najbardziej, mianem grafika określam osobę, która jest odpowiedzialna za zmianę wyglądu strony, co oznacza zarówno tworzenie grafiki jako takiej, jak również wkomponowanie jej w szablon (np. Smarty).
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.