Как подсунуть другой ресурс при 404
Такая ситуация
Есть много контекстов, для примера: web, msk;
В контекста web структура:
Можно ли обработать это действие в событии onPageNotFound и подсунуть ресурс из дефолного контекста (web)?
Пока что настроил обработку поиска запрашиваемого ресурса в другом контексте.
Есть много контекстов, для примера: web, msk;
В контекста web структура:
Главная
Блог
Запись блога 1
в mskГлавная
Так вот. Если мы в контексте msk и переходим в блог то получаем закономерное 404.Можно ли обработать это действие в событии onPageNotFound и подсунуть ресурс из дефолного контекста (web)?
Пока что настроил обработку поиска запрашиваемого ресурса в другом контексте.
<?php
if ($modx->context->key === 'mgr' || $modx->event->name !== 'OnPageNotFound') return;
$alias = $modx->context->getOption('request_param_alias', 'q');
if (!isset($_REQUEST[$alias])) {return false;}
$curUrl = strtok($_REQUEST[$alias], '?');
$defaultCtx = $modx->getContext($modx->getOption('default_context'));
if (key_exists($curUrl, $defaultCtx->aliasMap)) {
$modx->resource = $modx->getObject('modResource', $defaultCtx->aliasMap[$curUrl]);
}
Комментарии: 1
Сделал иначе.
В сессию записывается текущий контекст.
Потом идёт редирект на дефолтный контекст.
Но так же повешено событие на onHandleRequest и если в сессии есть предыдущий контекст — то он переключает его туда.
Небольшая магия с очередью ивентов и всё работает как нужно)
В сессию записывается текущий контекст.
Потом идёт редирект на дефолтный контекст.
Но так же повешено событие на onHandleRequest и если в сессии есть предыдущий контекст — то он переключает его туда.
Небольшая магия с очередью ивентов и всё работает как нужно)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.