Активация локализации темы дизайна из плагина
Вопрос возник внезапно.
Из плагина вывожу что-то с помощью page.html шаблона магазина
class shopMyPluginFrontendPageAction extends shopFrontendAction { бла-бла-бла $route = wa()->getRouting()->getRoute(); if ( !empty($route['theme']) ){ if ($route['theme'] == 'comfortbuy'){ $this->view->assign('prd_thumbs_tpl', wa()->getDataPath('themes/'.$route['theme'],'shop').'/products.list.html'); } else { $this->view->assign('prd_thumbs_tpl', wa()->getDataPath('themes/'.$route['theme'],'shop').'/list-thumbs.html'); } }То есть в плагине есть шаблон, внутри которого подключается шаблон темы дизайна для вывода списка продуктов
$html = $this->view->fetch($plugin_root.'/templates/actions/frontend/page.html'); $this->view->assign('page', array( 'id' => 'myplugin', 'title' => $page_title, 'name' => $page_name, 'content' => $html, )); $this->setThemeTemplate('page.html'); }
Всё замечательно, кроме одного. не срабатывает локализация темы дизайна для шаблона списка продуктов.
В принципе понятно почему, но пока не нашел, как заставить её срабатывать.
Как принудительно запускать механизм локализации, чтобы fetch нормально отработал?
Эта тема в архиве. Добавление комментариев к ней отключено.
8 ответов
Может, примерно так, но применительно к приложению: https://support.webasyst.ru/2503/lokalizatsiya/#comment5910.
И немного офтопика: а если в теме нет файла list-thumbs.html? Я бы сделал настройку в плагине, которая позволит пользователю самому выбрать нужный шаблон для темы выбранного поселения магазина. Тогда и хардкодить не придётся.
>list-thumbs.html?
Это не коммерческий плагин. Поэтому там костылей много. Не обращай внимания.
По решению - пробовал я так, не работает.
Я так понимаю, что тут другая задача стоит. Не включать временно локализацию плагина, а заставить сработать локализацию приложения/темы дизайна.
По идее оно бы должно и так работать....но вот поди ж ты. Не работает.
Решение должно работать. Нужно отключить локаль плагина до fetch шаблона.
waSystem::popActivePlugin();
И, может, её ещё и включать не нужно :) Как писал Леонид,
А вам как раз нужно, чтобы [``] не брало.
всё верно, если в самом плагине никакой локализации нет, то достаточно и одного push-а.
У меня получилось вот так — код из тестового плагина:
Только надо кеш почистить, чтобы сработало. Даже в режиме отладки мне потребовалась чистка кеша, чтобы стала применяться локализация магазина вместо локализации плагина.
ок, проверю и отпишусь.
Всё правильно. Работет.
Как в таком режиме - вставка скомпилировнного list-thumbs.html, так и просто передача имени файла в свой шаблон, а там инклуд...очень странно, что у меня с первого раза не заработало.
Ну да спишем это на новогодние чудеса, хотя вроде еще отмечать не начал -)