Заранее извиняюсь, если вопрос слишком громоздкий и непонятный, но я уже себе голову с ним сломал.....((( Как ясно из темы, применяю шаблонизатор Smarty. Мне нужно, чтобы он запускался из корневого каталога, и из каталога /admin. Файлы шаблонов тоже хранятся в двух местах /templates и /admin/templates. Сам Smarty лежит в каталоге /libs Для работы с этим хозяйством создаю файл smarty_config.php в котором определяю два дочерних класса smarty Код (Text): require ('libs/Smarty.class.php'); class MySmarty extends Smarty{ function MySmarty(){ $this->Smarty(); $this->template_dir = 'templates/'; $this->compile_dir = 'templates_c/'; $this->config_dir = 'config/'; $this->cache_dir = 'cache/'; $this->caching = 0; $this->compile_check = true; } } class AdmSmarty extends Smarty{ function AdmSmarty(){ $this->Smarty(); $this->template_dir = '../admin/adm_templates/'; $this->compile_dir = '../admin/adm_templates_c/'; $this->caching = 0; $this->compile_check = true; } } При использовании класса MySmarty проблем не замечено. Класс AdmSmarty используется следующим образом Код (Text): $pg = new AdmSmarty; $pg->assign("form", $a);//$a содержит массив $pg->display('forms/edit_static_form.tpl'); При запуске этого хозяйства в браузере появляются нужные мне значения $a, но при этом фоном для их отображения является шаблон index.tpl лежащий в каталоге templates/. При переименовании шаблона на index8.tpl в браузер вылазит ошибка Насколько я понимаю, смарти пытается скомпилировать этот шаблон... Методом проб и ошибок обнаружил, вот что - метод display используется только в одном месте - файле index.php. И его аргумент как раз та самая страница index.tpl. если аргументом сделать переименованную страницу index8.tpl - ошибка исчезает. Не понимаю каким образом метод display класса MySmarty связан с методом display класса AdmSmarty, к тому же объекты находятся в разных файлах, не связанных друг с другом :shock:
нет, это 2 разных файла, один в корневом каталоге, другой в папке admin. Дело в том, что всё работает, т.е. файл который в админке свои функции выполняет. Но при этом компилируется шаблон index.tpl....
оказывается проблема совсем не в смарти была, а в визуальном html-редакторе SPAW, который немного выше вызывался.... при выводе редактора на экран вот эта фигня и происходит....почему - для меня загадка) в классе редактора есть метод getHtml. $a->getHtml(); - ничего не происходит echo ($a->getHtml()); - происходит компиляция шаблона index.tpl )))) тупняк какой-то если честно)
для вывода там есть метод show() getHtml() предназначен, чтобы сгенерированный год передать в шаблон намёк ясен?
не, я это понимаю прекрасно - мне и нужно было запихнуть в шаблон)))) цитата из editor.class.php Код (Text): function show() { echo $this->getHtml(); } ;-)
я вот думаю - может у них со смарти где-то имена переменных перекрываются??, т.к. ни в том ни в другом не заданы области видимости переменных. Просто var и всё...
Проблема решилась переносом папки со Spaw из корневика сайта на уровень выше. Зависимости не уловил....
млин, застрелиться.... при переносе на хостинг - снова трабл. Кидаю папку с редактором на уровень выше чем public_html - редактор не подгружает свои же css и js файлы, конфиг и в поле для текста пишет "невозможно отобразить страницу". В любую(абсолютно любую, независимо от названия, вложенности, прав доступа) папку внутри public_html - редактор работает нормально, но в поле для редактирования отображается скомпилированный шаблон index.tpl Иллюстрация здесь - http://savepic.ru/1078947.jpg Риторический вопрос - КАК?