Наверх

Небольшой плагин для редиректа если страница перенесена

Переношу один сайт на MODX. Решили несколько изменить структуру сайта и некоторые страницы были перенесены на верхний уровень (а некоторые - наоборот внутрь общего контейнера). Чтобы не составлять вручную списки для редиректов написал небольшой плагинчик, который вычленяет из адреса alias, ищет по нему документ и редиректит на правильный адрес:
event->name == 'OnPageNotFound') 
    {
        $url = $_SERVER['REQUEST_URI'];
        if (substr($url, -5) == ".html") $url = substr($url, 0, -5);
        if (substr($url, -1) == "/")     $url = substr($url, 0, -1);
        $url = str_replace($modx->getOption("site_url"),"",$url);
        $url_array = explode('/', $url);
        $alias = array_pop($url_array);
        $res = $modx->getObject('modResource', array("alias" => $alias));
        if ($res) $modx->sendRedirect($modx->makeUrl($res->get('id')),
            ['responseCode' => 'HTTP/1.1 301 Moved Permanently']);
    }
Кстати, с его помощью можно легко перейти на другую схему URL (вложенные или нет) или можно вообще отключить дружественные URL. UPD. Обновил код. Теперь не страшно, если вдруг переключится значение чекбокса "Контейнер", ну и в случае, если ресурс не найден, нормально покажется 404 ошибка. G+ Оригинал статьи http://community.modx-cms.ru/blog/tips_and_tricks/9508.html


0 комментариев

    Авторизация

    через сервис Loginza:


    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX