jestem po pierwszych przejsciach ze http://www.smarty.php.net. 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 http://rzseattle.piwko.pl/ktory przetlumaczyl rzseattle na poczatek co to jest smarty
<?php require('Smarty.class.php'); $smarty = new Smarty; ?>
<?php require('/usr/local/lib/php/Smarty/Smarty.class.php'); $smarty = new Smarty; ?>
<?php // Edit your php.ini file, add the Smarty library // directory to the include_path and restart web server. // Then the following should work: require('Smarty.class.php'); $smarty = new Smarty; ?>
<?php http://www.php.net/define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); require(SMARTY_DIR.'Smarty.class.php'); $smarty = new Smarty; ?>
<http://december.com/html/4/element/html.html> <http://december.com/html/4/element/head.html> <http://december.com/html/4/element/title.html>{$title}</http://december.com/html/4/element/title.html> </http://december.com/html/4/element/head.html> <http://december.com/html/4/element/body.html> {$text} </http://december.com/html/4/element/body.html> </http://december.com/html/4/element/html.html>
<?php http://www.php.net/define( 'SMARTY_DIR', \"<sciezka bez wzgledna do plikow smarty>\" ); require( SMARTY_DIR.'Smarty.class.php' ); $smarty = new Smarty; //tutaj podajemy sciezki do poszczegolnych katalogow (podalem przykladowe sdciezki) // $_home_path - bezwzgledna sciezka do naszej strony // mozna to zapisac inaczej (to tylko przyklad :) ) $smarty->template_dir = $_home_path.'templates/'; $smarty->compile_dir = $_home_path.'templates/templates_c/'; $smarty->config_dir = $_home_path.'templates/configs/'; $smarty->cache_dir = $_home_path.'templates/cache/'; $smarty->assign( 'title', 'Test strony'); $smarty->assign( 'text', 'To jest text na naszej stronie'); $smarty->display( 'test.tpt' ); // plik test.tpt musi znajdowac sie w katalogu templates. ?>
Chciałem dopowiedzieć i jednocześnie zapytać się jako początkujący ze smarty: do jakiego konkretnie katalogu trzeba wrzucić rozpakowane pliki ze smarty? Bo jeżeli nie zdefiniuje sobie SMARTY_DIR to pojawia mi się taki błąd:
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?
[smatry cos sie wali na php5...]
Odpowiadam na swoje pytanie nr 3:
owszem, można samemu zainstalować smarty na serwerze, ale trzeba podać ścieżkę do katalogu:
[php:1:43f43a6e66]<?php
define("SMARTY_DIR","/sciezka/do/katalogu/smarty/");
?>[/php:1:43f43a6e66]
1. Można (zapoznaj się polską wersją GPL - pokazuje, że możesz z tym softem robić praktycznie wszystko, o ile nie zaczniesz rozpowszczechniać go jako swój, nie informując zainteresowanych, zę zawiera elemnty pochodzące z...)
2. Na http://smarty.php.net jest informacja na ten temat, wraz z poradą, jak to ominąc. Na tym foruum również pojawił się ten temat kilkakrotnie, chyba nawe dziś lub wczoraj. Jesłi to nie wystarczy - jest jeszcze pakiet przygotowany przezemnie -> http://www.mstudio.nq.pl/php_pl/index.php?udir=%2Fpoprawki (choć nie wiem, czy to akurat działa na najnowszysm snapsie)
DeyV Twoja paczka nie dziala prawidlowo
Sam ja od Ciebie sciagalem kiedys jak podawales linka, ale okazuje sie ze ten patch ma wady.
Mam wrazenie, ze nie czytales mojego http://forum.php.pl/viewtopic.php?t=4762 bo tam napisalem co nie dziala i dlaczego, jest tez wersja poprawiona.
czytalem, zrozumialem, tyle, zę linka nie pamietalem. Tak wiec napisałem - że dziś albo wczoraj było, a to co pamiętam - podałem...
Apropo - podaj link do twojej paczki - mozę też ją wrzucę na swój serwer - jak już mam tam takie śmieci
No przeciez w tamtym topicu jest na samym dole link. Jak czytales, ze nie widziales?
A link do topica masz 2 pietra wyzej.
sorki - nie zauwazylem - czlowiek na starość ślepnie :oops:
Zdarza sie najlepszym
ok - a temraz - mi wywala taki blad (na php4 ladnie dziala):
To na moim pliku??
Jesli tak to sprawdze u siebie i rano zdam relacje, byc moze cos przegapilem, badz jest tam jakas literowka, wszystkiego przetestowac nie moglem...
Hej
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.
Czy ktioś zgłasza te niekompatybilności do smartyTeamu?
Wieczorem poszukam w necie czy ktos juz czasem tego nie zrobil.
Ten poprzedni 'blad' z call_user_func np. byl na kilku stronach opisany (znalazlem dopiero po rozwiazaniu tego ), lacznie z poprawionym gotowym kodem. Byc moze i na to ktos wpadl, nie wierze ze bylem pierwszy
W kazdym razie poszukam i jak nic nie znajde to dam im znac.
tak czy inaczej - mógłbyś przygotować gotową, sprawdzoną paczkę. Przynajmniej na jakiś czas (do kolejnej wersji php5 ) byłby spokój.
Oczywiscie, ze przygotuje
Ba.. mam juz gotowa sprawdzana na kilku wersjach php i smiga, podrzuce za jakies 2 godzinki, bo teraz tylko na chwile wpadlem, zaraz wracam na kolacje i potem przyjde to wrzuce
Dobrzeby bylo, zeby to troche potestowac zanim sie rozglosi jako oficjalna poprawke. W sumie nie znam dokladnie klasy Smarty ani Smarty_Compiler, w ktorych mieszalem. Tak tylko je pobieznie przegladnalem, wiec moze jest cos o czym nie wiem.
here we are... http://stargate.uz.zgora.pl/~fido/smarty-php5.zip
Jesli ktos jest bardziej zainteresowany to uprasza sie o lookniecie w okolice linijki 550 z pliku Smarty.class.php
ponieważ od jakiegoś tygodnia wykorzystuje Smarty i trochę szukałem informacji na ten temat poniżej podaję linka (swoją drogą zamieszczonego gdzieś na tym forum) do pewnego artykuły - myślę, że nadaje się on do tematu: [smarty] - wiadomosci wstępne (zawiera kilka informacji o samej idei szablonów jak i systemie Smarty)
http://ivpro.net/szablony.htm
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
jakby ktos nie wiedzial to ja jestem ciemnym czlowiekiem 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...
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.
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.
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.
<?php $result = http://www.php.net/mysql_query(\"SELECT * FROM `news` ORDER BY `id` DESC\"); while ($row = $this->db->pobierz_rekordy($result)) { $news[$row['id']]['tytul'] = $row['tytul']; $news[$row['id']]['tresc'] = $row['tresc']; $news[$row['id']]['data_dodania'] = $row['data_dodania']; $news[$row['id']]['autor'] = $row['author']; $news[$row['id']]['email_autora'] = $row['author_email']; $news[$row['id']]['id'] = $row['id']; } /* while */ /* przypisujemy tablice $news do szablonu Smarty */ $tpl->assign_by_ref('news', $news); $tpl->display('news.tpl'); ?>
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.
Umieść kod JS między tagami: {literal}...{/literal}
Aktywne tzn, że zmieniają się po najechaniu? Lepiej CSS-a użyć
<?php while ($row = $this->db->pobierz_rekordy($result)) { $news[$row['id']]['tytul'] = $row['tytul']; $news[$row['id']]['tresc'] = $row['tresc']; $news[$row['id']]['data_dodania'] = $row['data_dodania']; $news[$row['id']]['autor'] = $row['author']; $news[$row['id']]['email_autora'] = $row['author_email']; $news[$row['id']]['id'] = $row['id']; } /* while */ ?>
<?php $news=http://www.php.net/array(); while ($row = $this->db->pobierz_rekordy($result)) { $news[]=$row ; } ?>
Witam,
mam pytanie odnośnie polskich czcionek. Co zrobić aby były przekazywane one w normalnej postaci, a nie jako coś takiego: ż #281; ?
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
___
Edit2:
Znalazłem tą funkcję o którą mi chodziło. Dla zainteresowanych: w php: http://pl.php.net/urldecode, natomias w smarty: http://smarty.php.net/manual/en/language.modifier.escape.php
Funkcje te co prawa nie likwidują polskich zaków, lecz zamieniają je tak aby mogły być używane w url'ach
<?php while ($row = $this->db->pobierz_rekordy($result)) { $news[$row['id']]['tytul'] = $row['tytul']; $news[$row['id']]['tresc'] = $row['tresc']; $news[$row['id']]['data_dodania'] = $row['data_dodania']; $news[$row['id']]['autor'] = $row['author']; $news[$row['id']]['email_autora'] = $row['author_email']; $news[$row['id']]['id'] = $row['id']; } /* while */ ?>
<?php $news=http://www.php.net/array(); while ($row = $this->db->pobierz_rekordy($result)) { $news[]=$row ; } ?>
<?php while ($wiersz = $this->db->mysql_fetch_array($wynik)) { $user[]=$wiersz ; } ?>
nie przekazuje danych wogole
<?php while ($wiersz = http://www.php.net/mysql_fetch_array($wynik)) { $user[]=$wiersz ; } ?>
<?php $sql = 'select contact_id, name, nick from contacts order by contact'; $smarty->assign("contacts", $db->getAssoc($sql)); ?>
$this->db - to sie odnosi do jakiejs klasy przez ktora kolega ma obslugiwana baze danych wiec dlatego ci nie dziala ;P
Zrobiłem tak jak podane było w pierwszym poście i pojawia się błąd:
Faktycznie wcześniej dawałem 7700 bo gdzieś wyczytałem że bezpieczniej... dałem na 777 i gra gitara.
Cześć.
Dział zawiera zaledwie parę tematów nt. Smartów i stąd moje pytanie; Czy warto używać Smartów w tej chwili, w tych czasach? Czy teraz tylko wszystko opiera się na frameworkach? Jest jakaś porządna alternatywna dla systemu szablonów takich jak Smarty?
To zależy kogo zapytasz
Ja nie używam i nie zamierzam, ale są tacy, którzy bez smartów nie dotkną projektu. We wielu frameworkach też da się w szablonach używać smarty, ale trzeba pewnie coś więcej zainstalować.
Pozdrawiam
Cysiaczek a czy mógłbyś napisać jakich inny rozwiązań używasz jeśli nie smarty? Pytam bo ja właśnie stawiam pierwsze kroki w tworzeniu stron w oparciu o szablony i pluginy. Do tej pory w index.php dołączałem jakieś mniejsze skrypty i wyświetlałem zawartość zmiennych. Ale teraz widzę, że jednak rozdzielenie php od html dużo by mi uprościło. Założyłem już dwa tematy:
http://forum.php.pl/index.php?showtopic=143385&hl=
http://forum.php.pl/index.php?showtopic=143956&hl=
ale niewiele zbliżyłem się do celu. Mógłbyś mi pomóc? Bardzo Cię o to proszę.
pozdro
Ja mam taki problem. Zainstalowałem Smarty, robiąc wszystko jak było napisane w książce oraz po przejrzeniu tego topicu muszę dojść do wniosku że zrobiłem wszystko jak należy. Ale jak próbuje uruchomić demo to wyskakuje mi taki błąd :
/*%%SmartyNocache:171234dbf3af6e07326-45988957%%*//*/%%SmartyNocache:171234dbf3af6e07326-45988957%%*/ Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template ".\templates\header.tpl" on line 3 "{popup_init src="/javascripts/overlib.js"}" unknown tag "popup_init"' in C:\xampp\htdocs\Smarty-3.0.7\libs\sysplugins\smarty_internal_templatecompilerbase.php:431 Stack trace: #0 C:\xampp\htdocs\Smarty-3.0.7\libs\sysplugins\smarty_internal_templatecompilerbase.php(253): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "po...', 3) #1 C:\xampp\htdocs\Smarty-3.0.7\libs\sysplugins\smarty_internal_templateparser.php(2319): Smarty_Internal_TemplateCompilerBase->compileTag('popup_init', Array) #2 C:\xampp\htdocs\Smarty-3.0.7\libs\sysplugins\smarty_internal_templateparser.php(2812): Smarty_Internal_Templateparser->yy_r35() #3 C:\xampp\htdocs\Smarty-3.0.7\libs\sysplugins\smarty_internal_templateparser.php(2912): Smarty_Internal_Templateparser->yy_reduce(35) #4 C:\xampp\htdocs\Smarty-3.0.7\libs\sysplugins\smarty_internal_smartytemplatecompiler.php(51): Smarty_Intern in C:\xampp\htdocs\Smarty-3.0.7\libs\sysplugins\smarty_internal_templatecompilerbase.php on line 431
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)