Ответы пользователя по тегу MODX
  • Как оставить неизменным URL для 404 страницы в условиях MODx Evo, NGINX+phpFPM?

    Anton_from_Amber
    @Anton_from_Amber Автор вопроса
    Разобрался как это сделать. Оставлю для других страждущих.
    Решение далеко не элегантное, но вполне рабочее.

    Правим только модекс.
    В корень сайта (или куда вам будет удобно) размещаем текстовый документ, который будет выводится в ответ на ошибку. Я разместил в нём свои плейсхолдеры для последующей замены.
    Создаём плагин, смысл которого в перехватывании ошибки 404 и выводе статического фала в выдачу.

    Надо помнить, что через АПИ модекса нельзя просто так просчитать чанк, если в нём есть вызовы других чанков, сниппетов и плейсхолдеров. Однако при должном уровне детализации можно в коде плагина вызвать вставку статических чанков (к примеру подвал), результатов работы определённых сниппетов (к примеру меню или ленту новостей).

    В моём случае я имел пару статических чанков и плейсхолдер для искомой некорректной строки. В результате код плагина выглядит так:

    $basePath = $modx->config['base_path'];
    $e = &$modx->Event;
    
    switch ($e->name) {
    	case 'OnPageNotFound' : {
    		$out = file_get_contents("404.html");
    		$rpl = 'http://my.domain.ua'.$_SERVER["REQUEST_URI"];
    		$out = str_replace("{{ErrURL}}", $rpl, $out);
    		$rpl=$modx->getChunk('metro_mnd');
    		$out = str_replace("{{metro}}", $rpl, $out);
    		$rpl=$modx->getChunk('footer_mnd');
    		$out = str_replace("{{footer}}", $rpl, $out);
    		echo $out;
    		exit;
    	}
    }
    
    Ответ написан
    Комментировать
  • Как указать произвольные url страниц в modx Evo?

    Anton_from_Amber
    @Anton_from_Amber
    Вы хотите оставить ЧПУ? Без проблем. Вам просто надо воссоздать дерево документов с учётом всех ранее сущесвовавших адресов. Устанавливать псевдоним корректно и настроить mod_rewrite. Включите в конфиге опцию «Использовать дружественные ссылки», позвольте повторяющиеся псевдонимы во вложениях и всё.
    Если как таковой страницы some_name не существует, сделайте заглушку и не выводите её в меню.
    Ответ написан
  • MODx Revolution: по выводу в шаблонах?

    Anton_from_Amber
    @Anton_from_Amber
    1. Если это важный момент в сайте или планируется активная обработка (перерасчеты, подтягивание других данных), то я пишу сразу сниппет и работаю с АПИ. Получите все TV документа и пробегитесь циклом используя передаваемый шаблон.

    2. Можно вызвать Ditto и установить фильтр с отсечением по данному ТВ (&filter=`tvname,false,2` ). Работает прекрасно и более чем стандартно.

    3. Самый тупой вариант выводить в шаблон всё с указанием класса на основе данного ТВ. Стиль указать display: none.
    Ответ написан
    2 комментария