Учимся использовать шорткоды в Yii

  • 3 729
  • Комментарии: 2
Шорткоды в Yii

В Вордпрессе есть замечательная штука — шорткоды, наверняка вы о них знаете. Почему бы нам не использовать шорткоды в Yii? Ведь это очень удобно и много где может пригодится. И это гораздо проще чем вы думаете 😉

Шорткоды в Yii

Начнём. Качаем расширение yii-shortcode и устанавливаем согласно инструкции. На всякий случай продублирую здесь:

  1. Распаковываем расширение в папку protected/extensions, в config/main.php прописываем:
    // application components
    'components'=>array(
        'shortcode' => array(
            'class' => 'ext.yii-shortcode.ShortCode',
        ),
    );
    

    config/main.php

  2. В контроллере, который отвечает за вывод страниц (можно сделать и в родительском контроллере protected/components/controller.php), в методе init() надо зарегистрировать наши шорткоды:
    /**
     * Метод, который выполняется перед инициализацией контроллера
     */
    public function init()
    {
        $this->registerShortcodes();
    
        return parent::init();
    }
    
    /**
     * Регистрируем шорткоды
     */
    private function registerShortcodes()
    {
        Yii::app()->shortcode->add_shortcode('tip', array($this, 'callbackTip'));
    }
    
    /**
     * Если шорткоды зарегистрированы,
     * этот метод будет заменять их вывод на вывод их обработчика
     * @param string $output Вывод, генерируемый текущим действием
     * @return string Вывод, генерируемый обработчиком шорткода
     */
    public function processOutput($output)
    {
        $output = Yii::app()->shortcode->parse($output);
    
        return parent::processOutput($output);
    }
    

    protected/components/controller.php

    Здесь я создал приватный метод, в котором регистрируются шорткоды и вызвал его в методе init(). А также переопределил метод processOutput(). Надеюсь тут всё понятно)

  3. Реализуем метод-обработчик шорткода «tip». Я забыл сказать, этот шорткод будет выводить текст в div’e с заданным цветом.
    /**
     * Обработчик шорткода [tip color="green"]Content[/tip]
     * @param array $atts Массив аттрибутов, ключ - название атрибута,
     * значение - значение по-умолчанию
     * @param string $content Содержание шорткода
     * (всё, что между открывающим и закрывающим тегом)
     * @return string Вывод, генерируесый шорткодом
     */
    function callbackTip($atts, $content)
    {
        extract( Yii::app()->shortcode->shortcode_atts( array(
            'bgcolor' => '#fcfcd9',
        ), $atts ) );
    
        return '<div class="tip" style="background:'.$bgcolor.';">' . $content . '</div>';
    }
    

    protected/components/controller.php

Самое время проверить!

Пишем в какой-нибудь статье, которая выводится с помощью контроллера наш шорткод:

Проверка шорткода

 

Сохраняем, и смотрим на результат:

Успешна проверка шорткода Yii

Всё получилось! Как видите, ничего сложного 😉 Конечно, можно задать стили для класса «tip», и ещё что-нибудь придумать с параметрами, но наша задача заключалась в том, чтобы научиться использовать шорткоды в Yii и мы это сделали!

Понравилась статья? Оцени её!
2 комментария
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *