Post
#1
|
|
|
Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin |
jestem po pierwszych przejsciach ze smarty . Postanowiłem sie podzielić swoim skromnym doświadczeniem.
Moje dane wyjściowe. 396 MB RAM, PIII, FoxServ 3.0, WinXP czy byly problemy z instalacja - NIE; jedyna czynnoscia ktora kazdy z Was musi wykonac to zassac smarty rozpakowac w katalogu glownym i to wszsytko jest i bedzie dzialac. Do czego sluzy smarty? Czesto macie problemy z czytaniem wlsnych skrytow wszsytko jest tam razem kod php HTML, czesc z Was rozdziela to za pomoca szablonow zas smarty idzie dalej w smarty mozna wykorzystac funkcje ktore sa tam wbudowane. Czy ja cos robilem wczesniej w smarty i na szablonach - NIE. skoro juz sciagneliscie smarty do siebie i macie rozpakowane czas napisanie pierwszego DZIAŁAJACEGO skryptu w tym celu wspomoge sie manualem ktory przetlumaczyl rzseattle na poczatek co to jest smarty Cytat 2.1 Czym jest SMARTY Smarty jest systemem szablonowym dla php. Służy ułatwieniu oddzielenia logiki aplikacji od jej wyglądu . Najlepiej opisuje go sytuacja kiedy programista aplikacji i projektant szablonów mają do spełnienia różne role (bo przecież w większości przypadków to nie jest ta sama osoba). Na przykład, powiedzmy, że projektujesz stronę web która wyświetla artykuł z gazety. Nagłówek, stopka autor i treść są elementami zawartymi w artykule, przyporządkowany im numer mówi nam w jaki sposób poszczególne elementy będą prezentowane. Elementy zostają przyporządkowane przez aplikacje do Smarty, wtedy projektant szablonów edytuje szablony używając kombinacji znaczników HTML i znaczników szablonu do formatowania prezentacji tych elementów (tabelki HTML, kolory tła, wielkość czcionek, arkusze stylów, itd.). Pewnego dnia programista potrzebuje zmienić sposób w jaki dane artykułu są pozyskiwane (zmiana logiki aplikacji). Ta zmiana nie interesuje projektanta szablonu, dane artykułu dalej będą dostarczane do szablonu w ten sam sposób. Podobnie , jeżeli projektant szablonu chce totalnie zmienić wygląd szablonu, nie wymaga to zmiany w logice aplikacji. Dlatego programista może zmieniać logikę aplikacji bez potrzeby restrukturyzacji szablonów, a projektant szablonów może modyfikować szablony bez łamania logiki aplikacji. Teraz kilka słów o tym czego SMARTY nie robi. Smarty nie próbuje całkowicie oddzielić logiki od szablonów. Nie ma problemu z logiką w twoich szablonach pod warunkiem ,że ta logika służy tylko do prezentacji. Krótka rada: trzymaj logikę aplikacji z dala od szablonów i logikę prezentacji z dala od aplikacji. To definitywnie utrzyma twoją witrynę jako w pełni i łatwo edytowalną w przyszłości. Jednym z unikalnych aspektów Smarty jest kompilowanie szablonów. To znaczy, że Smarty czyta plik szablonu i tworzy dla niego skrypt php. Kiedy już jest stworzony, szablony uruchamiane są przez ten skrypt. Dlatego nie ma potrzeby parsowania plików szablonów dla każdego żądania, równocześnie każdy szablon jest w pełni obrabialny dal kompilerów php takich jak Zend Accelerator (http://www.zend.com) albo php Accelerator (http://www.php-accelerator.co.uk/). Niektóre z własności Smarty: * Jest ekstremalnie szybki * Nie parsuje szablonu za każdym razem, tylko raz kompiluje. * Rekompiluje tylko te szablony które się zmieniły. * Język szablonów jest ekstremalnie elastyczny ponieważ możesz tworzyć własne funkcje oraz własne modyfikatory zmiennych * Konfiguralne znaczniki wyrażeń szablonów, możesz używać {}, {{}}, <!—{}--!>, itd. * Konstrukcje if/elseif/else/endif są przekazywane do parsera php, więc wyrażenie {if...} może być proste lub kompleksowe – jak sobie życzysz. * Nieograniczone zagnieżdżanie sekcji, if-ów itd. * Jeśli to możliwe osadzanie kodu php w plikach szablonów, jednak jest to czynność nie polecana * Wbudowane caschowanie * Samowolne źródła szablonów (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) * Architektura wtyczkowa (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) * Architektura pozwalająca wykorzystywać wtyczki teraz czas sprawdzic czy to co macie u siebie dziala Cytat Zainstaluj pliki bibliotek Smarty znajdujące się w katalogu /libs/ dystrybucji. Są to pliki php których NIE POWINENEŚ zmieniać. Są one wydzielone spośród wszystkich aplikacji i zostają zaktualizowane tylko wtedy kiedy zaktualizujesz je na nową wersje Smarty. Przykład 2-1. Pliki bibliotek Smarty Kod Smarty.class.php Smarty_Compiler.class.php Config_File.class.php debug.tpl /plugins/*.php (all of them!) Smarty używa stałej php o nazwie SMARTY_DIR która jest ścieżką systemową katalogu z bibliotekami Smarty. Przeważnie, jeżeli twoja aplikacja potrafi znaleźć plik Smarty.class.php, nie musisz ustawiawiać SMARTY_DIR. Dlatego, jeżeli Smarty.class.php nie znajduje się w twoim iclude_path, albo nie dostarczysz ścieżki absolutnej do tego w twojej aplikacji, wtedy musisz zdefiniować SARTY_DIR ręcznie. SMARTY_DIR musi zawierać ostatni slash. Oto jak tworzyć przykładowy skrypt php ze Smarty: Przykład 2-2. Tworzenie Smarty przykład Smarty
Spróbuj uruchomić powyższy skrypt. Jeśli w rezultacie zostanie wyświetlony błąd mówiący o tym, że nie można znaleźć pliku Smarty.class.php spróbuj zrobić jedną z następujące rzeczy: Przykład 2-3. Wpisać ścieżkę bezwzględna do katalogu z biblioteką
Przykład 2-4. Dodać kaalog biblioteki do php_include path
Przykład 2-5. Ustawić stałą SMARTY_DIR
jestem leniwy i poszukalem na forum ciekawego przykladu i dzieki uprzejmosci Pana search.php oraz wiedzi Seth`a odnalazlem cos Przykladowy wzorzec test.tpt: Kod obsługujący ten wzorzec:
pozdrawiam |
|
|
|
![]() |
Post
#21
|
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 17.05.2003 Skąd: Nysa Ostrzeżenie: (10%)
|
ale jak SMARTY ma poprawnie dzialac z 5 skoro tam zupelnie zmielilo sie OOP, a przeciez SMARTY to klasy?
a tak wogole, to mysle ze chlopaki od SMARTY wszystko poprawia, zeby dzialalo pod 5 i bedzie ok, a jak nie, to w razie czego mozna samemu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
Post
#22
|
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%)
|
Cytat ale jak SMARTY ma poprawnie dzialac z 5 skoro tam zupelnie zmielilo sie OOP, a przeciez SMARTY to klasy?
a tak wogole, to mysle ze chlopaki od SMARTY wszystko poprawia, zeby dzialalo pod 5 i bedzie ok, a jak nie, to w razie czego mozna samemu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Do OOP dużo rzeczy dodano, jednak te które są potrzebne do działania klasą z php 4 pozostawiono. Przy prostych klasach zmiany mogą ograniczać sie tylko do zamiany nazwy kontruktora na __contruct(), w Smarty może być z tym troche więcej roboty, bo pórcz OOP jeszcze kilka rzeczy uległo zmienie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
Post
#23
|
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 21.09.2003 Skąd: Truskaw Ostrzeżenie: (0%)
|
Cytat Hmm, a ja znalazlem kolejna niekompatybilnosc z PHP5
Zauwazylem ze w koncu w PHP5 pozbyli sie globali HTTP_*_VARS, z ktorych Smarty namietnie korzysta. Mam juz przygotowana łatke (spradzana na php 4.1.1, 4.3.3 i snaps z php5), wieczorkiem podrzuce. 16 wyszla wersja 2.6.1 która nie ma problemu z HTTP_*_VARS Cytat [16-January-2004] This release is focused on minor fixes and minor new features. $global_assign has been removed, assign globals explicitly if you need them. $SCRIPT_NAME is still assigned for backward compatability. You can make your debug console persist by using SMARTY_DEBUG=1 or SMARTY_DEBUG=0 in the URL. Superglobals $_* are now used by default instead of $HTTP_*_VARS.
|
|
|
|
Post
#24
|
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 19.11.2003 Skąd: Poznań Ostrzeżenie: (0%)
|
Cytat a ja mam takie pytanko.
robie sobie pewien projekt i szczerze mowiac nie chce mi sie poswiecac czasu na pisanie od podstaw systemu szablonow - nie wiecie czy mozna zgodnie z prawem dolaczyc smarty, oczywiscie wszedzie zaznaczajac, ze jego wlasnie uzylem? Możesz bez problemu - smarty jest na LGPL-u a nie jak ktoś napisał na GPL-u i nic nie trzeba omijać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) http://smarty.incutio.com/?page=SmartyFreq...estions#other-1 |
|
|
|
Post
#25
|
|
|
Grupa: Przyjaciele php.pl Postów: 120 Pomógł: 0 Dołączył: 29.11.2003 Skąd: Tarnów Ostrzeżenie: (0%)
|
jakby ktos nie wiedzial to ja jestem ciemnym czlowiekiem (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) i pomimo bardzo rozbudowanej instrukcji podanej przez It's_me, nadal nie rozumiem o c w tym chodzi.. (zbyt oficjalny (jak dla mnie)jezyk) napewno duza czesc uzytkownikow tego forum (w tym mnie) ucieszylo by zamieszczenie lopatologicznego objasnienia ich dzialania (+przyklady).
to tylko taka moja drobna sugestia... |
|
|
|
Post
#26
|
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%)
|
Obawiam sie że już bardziej łopatologicznie sie nie da... Zamiast próbować rozumieć znaczenie słow, powklejaj te kody w pliki, poodpalaj, pozmieniaj kilka linijek, próbuj w ten sposób zajarzyć o co w tym chodzi.
|
|
|
|
Post
#27
|
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%)
|
Znalazłem przed chwlką na Sieci...Godzina póżna więc brak testów
http://www.paullockaby.com/projects/smarty-light/ SMARTY wersja odchudzona -z tego co sie orientuje niektorzy poszukują tak więc wrzucam link. Sam nie korzystałem jeszcze ale napewno probuje. |
|
|
|
Post
#28
|
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 4 Dołączył: 22.01.2005 Ostrzeżenie: (0%)
|
A ja zarzuce troche kodu może to komuś się kiedyś przyda. Miałem problem z wyświetlaniem newsów, chodziło o tablice którą robiłem. Naszczęście pomógł mi @Hwao. Tutaj zarzuce troche kodu jak wyświetlić dużą ilosć rekordów wyciąganych z bazy danych MySQL przy użyciu Smarty.
news.tpl Kod {foreach from=$news item=newsy}
<table width="400"> <tr> <td align="left">{$newsy.data_dodania} <b>{$newsy.tytul}</b></td> </tr> <tr> <td align="left" colspan="2">{$newsy.tresc}</td> </tr> <tr> <td align="left"><a href="mailto:{$newsy.email_autora}">{$newsy.autor}</a></td> <td align="right"><a href="komentarze-news-{$newsy.id}.html">Komentarze</a></td> </tr> </table> {/foreach} Ten post edytował Diwi 29.04.2005, 10:34:40 |
|
|
|
Post
#29
|
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 17.07.2005 Ostrzeżenie: (0%)
|
Witam wszystkich i od razu stawiam pytanie (nie wiem czy nie jest troche lamerskie, ale mam tylko 18 lat i dopiero się uczę).
Czy jest jakiś sposób na to by Smarty pracował ze skryptami napisanym w JavaScript? Do czego mi to potrzebne? Ano chciałem na robionej przeze mnie stronie zrobić tzw. aktywne przyciski. Jednak po umieszczeniu kodu skryptu Java w sekcji HEAD Smarty pokazuje mi błąd kompilacji. Czy ktoś próbował już tego i czy wogóle jest to możliwe? Pozdrawiam, Stogi. |
|
|
|
Post
#30
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 196 Pomógł: 2 Dołączył: 17.01.2004 Skąd: Sosnowiec Ostrzeżenie: (0%)
|
Umieść kod JS między tagami: {literal}...{/literal}
|
|
|
|
Post
#31
|
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%)
|
Aktywne tzn, że zmieniają się po najechaniu?(IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Lepiej CSS-a użyć
|
|
|
|
Post
#32
|
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 2 Dołączył: 4.03.2003 Skąd: C:/Windows/Temp Ostrzeżenie: (0%)
|
Cytat(Diwi @ 2005-04-29 11:34:02)
a nei szybciej
a foreach zostaje taki sam! myśle że szybciej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#33
|
|
|
Grupa: Zarejestrowani Postów: 210 Pomógł: 0 Dołączył: 31.01.2004 Skąd: Kraków Ostrzeżenie: (0%)
|
Witam,
mam pytanie odnośnie polskich czcionek. Co zrobić aby były przekazywane one w normalnej postaci, a nie jako coś takiego: ż #281; ? |
|
|
|
Post
#34
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
Cytat(son @ 2006-02-23 15:50:01) Witam, mam pytanie odnośnie polskich czcionek. Co zrobić aby były przekazywane one w normalnej postaci, a nie jako coś takiego: ż #281; ? Gdzie i skąd przekazywane? Jak dostarczasz do templateu zmienne za pomocą assign() to wszystko powinno być OK. |
|
|
|
Post
#35
|
|
|
Grupa: Zarejestrowani Postów: 210 Pomógł: 0 Dołączył: 31.01.2004 Skąd: Kraków Ostrzeżenie: (0%)
|
Masz rację. Kiedy normalnie dołączam dane do temlate czcionki są OK. Pomyliłem się dlatego, że dane wyciągnąłem z MySql i tam były tak 'rozkodowane'. Ale to nie jest ważne:p
Mój problem polega na tym, że gdy próbuję sformatować jakiś tekst za pomocą {$tekst|capitalize} zakładając, że zmienna $test="aącaźgvćbłnógaaemłuee" dostaję wynik: AąCaźGvćBłNóGaaemłUee Nie trudno zauważyć, że zamiast pierwszej litery smarty zamienia na wielkie pierwszą oraz wszystkie po polskich znakach. ___ Edit: Hmm... to może ktoś mi powie jak uciec od polskich znaków? Może być w php (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ___ Edit2: Znalazłem tą funkcję o którą mi chodziło. Dla zainteresowanych: w php: urldecode oraz urlencode, natomias w smarty: {$articleTitle|escape:"url"} Funkcje te co prawa nie likwidują polskich zaków, lecz zamieniają je tak aby mogły być używane w url'ach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował son 26.02.2006, 12:00:06 |
|
|
|
Post
#36
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.08.2005 Ostrzeżenie: (0%)
|
Cytat(eS... @ 2005-09-19 01:08:49) Cytat(Diwi @ 2005-04-29 11:34:02)
a nei szybciej
a foreach zostaje taki sam! myśle że szybciej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ehh... jak wstawiam:
to wyskakuje mi blad: Kod Fatal error: Call to a member function on a non-object a nie przekazuje danych wogole es jak to zrobic zeby mozna bylo potem wywaloac dane po nazwach pol w bazie tzn {$user.id} {$user.imie} itd trzeba wszystko pisac tak jak napisal divi? edit: znalazlem jeszcze to:
ale tez mi nie dziala... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ten post edytował moron 20.03.2006, 22:53:23 |
|
|
|
Post
#37
|
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 0 Dołączył: 20.02.2005 Skąd: Poznań Ostrzeżenie: (30%)
|
$this->db - to sie odnosi do jakiejs klasy przez ktora kolega ma obslugiwana baze danych wiec dlatego ci nie dziala ;P
|
|
|
|
Post
#38
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 2.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%)
|
Zrobiłem tak jak podane było w pierwszym poście i pojawia się błąd:
Kod Fatal error: Smarty error: unable to write to $compile_dir '/public_html/templates/templates_c'. Be sure $compile_dir is writable by the web server user. in /public_html/smarty/Smarty.class.php on line 1092 Ktoś wie dlaczego? |
|
|
|
Post
#39
|
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 11.07.2008 Skąd: 34N, 72E Ostrzeżenie: (0%)
|
Zrobiłem tak jak podane było w pierwszym poście i pojawia się błąd: Kod Fatal error: Smarty error: unable to write to $compile_dir '/public_html/templates/templates_c'. Be sure $compile_dir is writable by the web server user. in /public_html/smarty/Smarty.class.php on line 1092 Ktoś wie dlaczego? Pewnie masz źle ustawione prawa dostępu do katalogu - zmień więc te CHMODy i powinno śmigać. |
|
|
|
Post
#40
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 2.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%)
|
Faktycznie wcześniej dawałem 7700 bo gdzieś wyczytałem że bezpieczniej... dałem na 777 i gra gitara.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 14.08.2026 - 06:06 |