Вывод html тегов на странице в MODX

Иногда возникает необходимость вывести на странице сайта листинг HTML кода. Например, вы хотите продемонстрировать код формы, типа такого:

    
        <form action="send.php">
            <input type="submit" value="Send">
        </form>
    
Для того, чтобы браузер не интерпретировал теги, а показал именно код, необходимо искуственно "поломать" теги, заменив знак < на &lt;:
    
        &lt;form action="send.php">
            &lt;input type="submit" value="Send">
        &lt;/form>
    

При выводе страницы браузер отобразит &lt; как <

Если вы используете для создания контента плагин визуального редактора (например TinyMCE), то он делает именно это (заменяет < на &lt;). Но визуальные редакторы - это для контент-манагеров, я ими стараюсь не пользоваться. Конкретно к TinyMCE у меня много претензий - то, что он в свои теги оборачивает код - это еще можно понять и простить, но то, что он иногда режет ненужные с его точки зрения теги и классы - это уже перебор (с год назад были подобные проблемы с TinyMCE под Evo, сейчас может починили, не знаю). Последней каплей, переполнившей чашу терпения, был баг в одной из старых версий TinyMCE (тоже под Evo), когда сочетание символов )] в тексте роняло MODX при попытке открыть страницу в браузере.

Этот вариант рабочий, но что делать, если нужно вывести простыню кода? Я в таких случаях использую php функцию htmlentities, которая преобразует символы в соответствующие HTML сущности.

Создаем сниппет code:

    
        <?php
            return htmlentities($input);
    

Теперь, для вывода листинга HTML кода на странице сайта, используем вызов сниппета code с параметром input, в котором передаем сниппету нужный текст:

    
        [[code?&input=`
        <form action="send.php">
            <input type="submit" value="Send">
        </form>
        `]]
    

Теги: MODX, сниппет, HTML

Сообщение отправлено

Закрыть