Как указать дефолтный шаблон для отдельных страниц?
ЕСТЬ РЕШЕНИЕ
ЗАКРЫТО
Например, для страниц создания/редактирования материалов.
#1
5 сентября 2016 в 10:17
Суть в том, что я пишу тему на бутстрапе и приходится менять JS. При этом не хотелось бы менять совсем все. С админкой сейчас проблем нет, разные темы указал и все. Для разных компонентов тоже можно указать свой шаблон. А как правильно указать тему на уровне отдельных страниц, вернее типов страниц? Чтобы не переписывать фронт страниц создания материалов. Чувствую, что ответ на поверхности должен быть, но… я на работе и тут не хватает досугового времени залезть в код и посмотреть самому, может кто раньше подскажет
#2
5 сентября 2016 в 16:44
Нашел решение. Вызвал хук engine_start в котором реализовал следующий код:
public function run(){ // Подготавливаем URL к проверке if ($pos_que !== false){ } $pseudo = false; // Если во втором элементе add или edit выводим дефолтный шаблон if( $segments[2] === 'add' || $segments[2] === 'edit' ){ cmsConfig::getInstance()->set('template', 'default'); cmsTemplate::getInstance()->setName('default'); $pseudo = true; } } // Если у нас в шаблоне есть свой хелпер, то с помощью этой константы можно вернуть к исполнению дефолтный // необходимо т.к. хелпер подключается раньше всех хуков return true; }
#3
5 сентября 2016 в 17:26
Иван Шкута, Спасибо, мне что то подобное скоро понадобиться, только не понял, зачем использовать
Может подойдет функция
и создать свой файл похожий на main.tpl.php
cmsConfig::getInstance()->set('template', 'default'); cmsTemplate::getInstance()->setName('default');
/** * Устанавливает шаблон скелета * @param string $layout */ public function setLayout($layout){ $this->layout = $layout; }
Сегодня в 12:08
#4
5 сентября 2016 в 21:13
А что-то вроде
не работает?
P.S. не проверял, потому и спрашиваю.
... $this->cms_template->setName('default'); // или cmsTemplate::getInstance()->setName('default');
P.S. не проверял, потому и спрашиваю.
Насколько я понимаю, лэйот нужно указывать ДО вызова шаблона — в логике. На уровне темы эти объекты не помогут. Могу ошибаться…
#6
15 сентября 2016 в 09:30
Да, действительно ошибался. Конструкция cmsTemplate::getInstance()->setName('default'); Работает в любом месте шаблона.