Смена шаблона через плагин
Добрый день, что-то не получается разобрать со сменой шаблона через плагин при загрузке страницы
В чем проблема, надо вызывать плагин не для OnLoadWebDocument? или в чем-то другом проблема?
case 'OnLoadWebDocument':
$id = $modx->resource->get('id');
$resource = $modx->getObject('modResource',$id);
$resource->set('template', 4);
$resource->save();
break;
Шаблон меняется в админке и все бы хорошо, на на странице сайта указанный шаблон применяется только после второго захода, т.е получается, что смена шаблона происходит после отображения страницы.В чем проблема, надо вызывать плагин не для OnLoadWebDocument? или в чем-то другом проблема?
Комментарии: 9
case 'OnLoadWebDocument':
$modx->resource->set('template', 4);
break;
Это не помогает. Событие не то как я понял.
но вроде есть решение, может кому нужно. можно менять шаблон на лету
но вроде есть решение, может кому нужно. можно менять шаблон на лету
case 'OnWebPageInit':
$resource = $modx->request->getResource($modx->resourceMethod, $modx->resourceIdentifier);
$resource->set('template', 4);
$resource->save();
break;
Кто этот ужас Вам подсказал? @Баха Волков выше написал правильное решение именно для смены шаблона на лету. И не надо ничего писать в базу. Во-первых, +1 запрос на сервер при каждом просмотре страницы. А если уже установлен нужный шаблон? Во-вторых, это уже не «на лету».
Так в том то и проблема, что вариант не меняет шаблон
Событие: OnLoadWebDocument
Запускается непосредственно перед отправкой ответа и после загрузки ресурса.
После загрузки, как я понял шаблон меняется после его первичного отображения, т.е. при втором визите на страницу. Saving Happens Automaticallydocs.modx.com/revolution/2.x/developing-in-modx/basic-development/plugins/system-events/ondocformsave
No need to run the $resource->save() method as that happens automatically.
Всем привет.
Посмотри ролик на канале Open MODx он разбирает данный кейс и объясняет как данный принцип работает: MODx. Два шаблона у одного ресурса! Как???
Я думаю после просмотра сразу станет понятней.
Посмотри ролик на канале Open MODx он разбирает данный кейс и объясняет как данный принцип работает: MODx. Два шаблона у одного ресурса! Как???
Я думаю после просмотра сразу станет понятней.
Да в таком варианте через два события работает, а как быть если нужно сменить шаблон у страницы при событии OnPageNotFound?
типа того
типа того
case 'OnPageNotFound':
$section = $modx->getObject('modResource', $qq);
$section_id = $section->get('id');
$section_key = $section->get('context_key');
$modx->sendForward($section_id);
Похоже разобрался)
Ну и ладушки.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.