Cheizer
@Cheizer

Как в CMS MODx сделать редирект из плагина?

Друзья, памагитииии! Не хватает мозгов, есть плагин, который делает из URL поддомены, тут порядок.
Плагин запускается на события OnHandleRequest и OnPageNotFound.

Вначале в цикле делаем список поддоменов из страниц, которые будут отображаться при переходе по ним. Все работает. Если есть страница например site.ru/page то она откроется и ее контент по адресу page.site.ru.

Но вот засада, страница так же открывается и по старому адресу site.ru/page как теперь докрутить в плагин так, что бы при переходе на страницу, был редирект на ее созданный поддомен?

Я думаю нужно получить ID и ALIAS текущей страницы, и сделать редирект на ее поддомен, но ничего не получается :(
пробовал так
if($parent === 15){
               $url = MODX_URL_SCHEME.$doc->get('alias').'.site.ru';
               $modx->sendRedirect($url); 
            }


А вот код самого плагина:
if(!$docs = $modx->getCollection('modResource', array(
    'parent' => 15,
    'published' => 1,
    'deleted' => 0,
    'searchable' => 1
))){return;}

$domains = [];
foreach ($docs as $doc) {
 $domains[$doc->get('alias').'.site.ru'] = $doc->get('id');
}

switch ($modx->event->name) {
    case 'OnHandleRequest':
        if (array_key_exists($_SERVER['HTTP_HOST'], $domains)) {
            $modx->config['site_start'] = $domains[$_SERVER['HTTP_HOST']];

     /*  $parent = $modx->resource->get('parent');
            if($parent === 15){
               $url = MODX_URL_SCHEME.$doc->get('alias').'.site.ru';
               $modx->sendRedirect($url); 
            }
*/

        }
        break;
    case 'OnPageNotFound':
        if (array_key_exists($_SERVER['HTTP_HOST'], $domains)) {
            $subdomain = array_shift(explode('.', $_SERVER['HTTP_HOST']));
            if ($id = $modx->findResource($subdomain.$_SERVER['REQUEST_URI'] , 'web')) {
                $modx->sendForward($id);
            }
        }
        break; 
}
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Alru82
Почитай про $modx->sendRedirect
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы