[Odnosnie Smarty, to nie wiem, czy nie zrezygnowac z tego. Nie zachwycilo mnie.]
Uproscilem problem, czyszczac go z wszystkiego, co niepotrzebne.
Oto katalogi/pliki:
|- smarty (katalog z calym silnikiem smarty)
|- templates (katalog z napisanymi przeze mnie szablonami)
| |- 1 (katalog)
| | |- a.tpl (plik)
| |- 2 (katalog)
| |- a.tpl (plik)
|- templates_c (katalog do przechowywania skompilowanych przez smarty szablonow)
|- 1.php
|- 2.php
Zawartosc plikow:
a.tpl z katalogu templates/1:
<?php Plik a.tpl z katalogu 1 ?>
a.tpl z katalogu templates/2:
<?php Plik a.tpl z katalogu 2 ?>
1.php:
<?php require('./smarty/Smarty.class.php'); //dolaczam biblioteke smarty $tpl = new Smarty; //nowy objekt smarty $tpl -> template_dir = './templates/1'; //definiuje katalog z szablonami $tpl -> compile_dir = './templates_c/'; //definiuje katalog dla skompilowanych szablonow $tpl -> display('a.tpl'); //wyswietl szablon a.tpl ?>
2.php:
<?php require('./smarty/Smarty.class.php'); $tpl = new Smarty; $tpl -> template_dir = './templates/2'; $tpl -> compile_dir = './templates_c/'; $tpl -> display('a.tpl'); ?>
Uruchomienie 1.php powinno wyswietlic: Plik a.tpl z katalogu 1.
Uruchomienie 2.php powinno wyswietlic: Plik a.tpl z katalogu 2.
Niestety, tak sie nie dzieje

Uruchamiajac 1.php jest OK, ale uruchamiajac 2.php wyswietla mi sie to samo, co przy 1.php.
Po usunieciu plikow wygenerowanych przez smarty w katalogu compile_dir, tzn z templates_c, uruchomienie 2.php jest OK, ale juz 1.php jest zle (czyli pierwsze wywolanie jest dobre, a drugie juz nie).
Czy jest jakas elegancka metoda na przezwyciezenie tego problemu bez koniecznosci uswania skompilowanego szablonu przed uruchomieniem polecenia $tpl->display?
___________________________________________________________________
Juz wiem


Po prostu wszedzie tam, gdzie definiuje sie template_dir jako './templates/jakiskatalog';
powinno sie tez zdefiniowac katalog compile_dir jako './templates_c/jakiskatalog'.
No i oczywiscie stworzyc w /templates_c katalog jakiskatalog
Teraz juz dziala
