Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [smarty] Konfiguracja katalogów
maniek74
post
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 26.08.2013

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


Witam

Chciałbym aby dla
Panelu administracyjnego
Stron
Panelu klienta

Były oddzielne katalogi dla smartów

znalazłem w necie

Ścieżki dla portalu
$smarty=new Smarty();
$smarty->setTemplateDir("_portal/templates");
$smarty->setCompileDir("_portal/templates_c");
$smarty->setCacheDir("_portal/cache");
$smarty->setConfigDir("_portal/configs");

Ściezki dla admina
$smarty=new Smarty();
$smarty->setTemplateDir("administration/templates");
$smarty->setCompileDir("administration/templates_c");
$smarty->setCacheDir("administration/cache");
$smarty->setConfigDir("administration/configs");

Ściezki dla Panelu klienta
$smarty=new Smarty();
$smarty->setTemplateDir("customerPanel/templates");
$smarty->setCompileDir("customerPanel/templates_c");
$smarty->setCacheDir("customerPanel/cache");
$smarty->setConfigDir("customerPanel/configs");

....

ale powtarzanie tego z każdym php chyba nie ma sensu. Czy można jakoś skonfigurować smarty aby tego kawałka kodu nie powtarzać.

Pozdrawiam

Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Jesli masz zamiar to powtarzac w kazdym php, znaczy ze zle zrobiles strukture swojej aplikacji....

Obiekt smarty ma byc tworzony tylko i wyłącznie raz tylko i wyłącznie w jednym pliku i to wlasnie tylko w tym pliku masz ustawic wlasciwe sciezki.
Go to the top of the page
+Quote Post
maniek74
post
Post #3





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 26.08.2013

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


Dzięki nospor,

A może znasz jakiś przykład jak poprawnie powinna być napisana struktura aplikacji opartej o smarty, bo nie pisałem nigdy aplikacji opartych o nie. Mam napisanych sporo aplikacji, apartych o jeden silnik, tak więc jak ktoś ma sklep a chce dodac forum to żaden problem, dodaje katalog z forum, dodaje wpis do bazy z informacją jaka domena lub subdomena ma go pokazywać.

Obecnie mam napisane tak.
1. Sprawdza po domenie jaki komponent (sklep, portal, forum.....) jest przypisany do niej i jaką ma konfiguracje, jaki szablon, język, walutę itp
2. przechodzi na index komponentu gdzie spradza jaka strona jest wywołana, dzięki temu każdy klient może sobie sam zdefiniować swoje nazwy modrewrite, przy okazji definiuje dla każdej strony szablon jaki ma pokazać.
3. wywołuje daną stronę php np. include("_portal/modules/article.php")
4. wywołuje stronę z szablonami include("_".DB_COMPONENT."/pageOpen.php"); i tutaj dodaje układ strony, każda strona może mieć inny header, foter, inny układ, inne boxy po lewej i prawej, dowolna konfiguracja.
5. ładuje pliki header.php, left.php, right.php i foter
6. i teraz dopiero daje szablony plików.

Dzięki takiemu rozwiązaniu jeden admin obsługuje np. 2 strony www i sklep.
http://eddd.pl/ - sklep
http://www.dezynsekcja.com.pl/ - strona
http://dezder.pl/

jedena aplikacja a ma 3 różne strony, były robione 4 lata temu więc mają stare linkowanie.

obecnie linkowanie wygląda tak

http://sexuelle.pl/

lub tak:
http://itcomputerpartner.pl/pl/oferta

tak więc możliwośći konfiguracji nieograniczone, chciałem teraz napisać nowe wersje oparte o smarty.

Pozdrawiam

Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Poprostu w jednym miejscu masz tworzyć obiekt smartiego. Moze to być chociazby index.php.
Go to the top of the page
+Quote Post
maniek74
post
Post #5





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 26.08.2013

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


Dzieki, dla pewności czyli np w index.php dla komponentu tworzę obiekt a np w
header daje

........
$smartHeaderTop = $tpl->display("_".DB_COMPONENT."/templates/".DB_THEME."/header.tpl");

w foter daje

......
$pageFooter = $tpl->display("_".DB_COMPONENT."/templates/".DB_THEME."/footer.tpl");


itd a w pliku szablonu składam to do kupy pageOpen.php

$tpl->assign('PAGE_HEADER', empty($smartHeaderTop) ? '' : $smartHeaderTop); // GÓRA STRONY - HEADER
$tpl->assign('PAGE_LEFT', empty($pageLeft) ? '' : $pageLeft); // LEWA CZĘŚĆ STRONY
$tpl->assign('PAGE_MIDDLE', empty($pageMiddle) ? '' : $pageMiddle); // ŚRODEK STRONY
$tpl->assign('PAGE_RIGHT', empty($pageRight) ? '' : $pageRight); // PRAWA CZĘŚĆ STRONY
$tpl->assign('PAGE_FOOTER', empty($pageFooter) ? '' : $pageFooter); // STOPKA STRONY
$tpl->display("_".DB_COMPONENT."/templates/".DB_THEME."/pageOpen.tpl");


Tak będzie prawidłowo?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ?

I jeszcze jedno czy mozna pozbyć się znaku $ ze zmiennej z pliku tpl tak jak jest to w phpBB
bo teraz musze dawać {$PAGE_LEFT} a chciałbym dawać {PAGE_LEFT}

Pozdrawiam



Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Masz miec jeden glowny plik szablonu, np. index.tpl
W nim robisz include stopki, include naglowka, include tresci danej strony.

Na koncu index.php robisz raz $smarty->display("index.tpl") i juz.

Cytat
I jeszcze jedno czy mozna pozbyć się znaku $ ze zmiennej z pliku tpl tak jak jest to w phpBB
phpBB uzywa innego systemu szablonow wiec ma inny zapis. smarty wymaga $ i tyle w temacie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 21:18