Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] Konfiguracja katalogów
Forum PHP.pl > Forum > PHP
maniek74
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

nospor
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.
maniek74
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

nospor
Poprostu w jednym miejscu masz tworzyć obiekt smartiego. Moze to być chociazby index.php.
maniek74
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?questionmark.gifquestionmark.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



nospor
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.
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.