Как сделать редиррект между контекстами?

В MODX существует несколько способов реализации редиректа между контекстами. Вот некоторые из них:

1. Использование плагина "Redirect":
- Устанавливаем плагин "Redirect" из официального репозитория MODX.
- В настройках плагина указываем начальный и конечный контексты для редиректа.
- После настройки плагина, при обращении к страницам в начальном контексте будет автоматически осуществляться переадресация на соответствующую страницу в конечном контексте.

2. Использование сниппета "modx.redirect":
- Создаем новый сниппет и называем его, например, "Redirect".
- В теле сниппета добавляем следующий код:

     $startContext = 'название_начального_контекста';
     $endContext = 'название_конечного_контекста';
     $currentPageId = $modx->resource->get('id');

     $startContextId = $modx->getOption('site_start', '', '', true, true); // id ресурса, который соответствует начальному контексту

     $newPageId = $modx->getChildIds($startContextId);
     foreach($newPageId as $pageId) {
         $res = $modx->getObject('modResource', $pageId);
         if ($res->get('alias') === $modx->resource->get('alias')) {
             $modx->sendRedirect($modx->makeUrl($pageId, '', '', 'full'));
         }
     }
     $modx->sendRedirect($modx->makeUrl($currentPageId, '', '', 'full'));

- В этом коде мы проверяем, является ли текущая страница в начальном контексте и, если да, то осуществляем редирект на соответствующую страницу в конечном контексте.

3. Использование сниппета "phpredirect":
- Также можно воспользоваться стандартным сниппетом MODX "phpredirect".
- Создаем новый сниппет и называем его, например, "Redirect".
- В теле сниппета добавляем следующий код:

     $startContext = 'название_начального_контекста';
     $endContext = 'название_конечного_контекста';
     $currentContext = $modx->context->get('key');
     
     if ($currentContext === $startContext) {
         $redirectUrl = $modx->makeUrl($modx->resource->get('id'), '', '', 'full', true);
         $redirectUrl = str_replace('/'.$currentContext, '/'.$endContext, $redirectUrl);
         $modx->runSnippet('phpredirect', ['url' => $redirectUrl, 'response' => 301]);
     }

- В этом коде мы сравниваем текущий контекст с начальным контекстом и осуществляем редирект, если это необходимо.

Надеюсь, эти подробные объяснения помогут вам осуществить редирект между контекстами в MODX.