Шорткоды

Всем добрый вечер. Те кто знаком с Wordpress наверняка сталкивались с такой вещью как шорткоды.

Т.е. вставляем на любой странице подобный шорткод [contact] получаем форму обратной связи к примеру.

Подскажите пожалуйста куда копать чтобы реализовать подобное в Yii :)

Я так понимаю в основе лежит не что иное как WYSIWYG BBcode ? ::)

Я бы так делал:

Предположим, у нас есть контроллер, выводящий страницы сайта. Назовем его PageController.

Внутри контроллера определен экшн actionDetail($slug), выводящий содержимое страницы.

Основной текст у нас пускай лежит в поле description модели Page.

  1. В модели Page определяем геттер

public function getAdvancedDescription()

{

  return какой_нибудь_обработчик($this->description);

}

Функция какой_нибудь_обработчик() занимается тем, что заменяет шорткоды на результат выполнения некоего модуля.

На роль некоего модуля лучше всего, полагаю, подходят виджеты.

Иными словами, нашли в тексте "[contact]", заменили его на результат выполнения ContactWidget (или на пустое место, если что-то пошло не так)

А виджеты хороши тем, что у них и логика есть, и представление.

А, забыл уточнить-то. Геттер getAdvancedDescription нужен для того, чтобы не париться всякий раз, когда нужно вывести страницу вместе с модулями на ней. Во вьюхе делаем тупо <?= $page->advancedDescription ?>, дальше оно уже само.

Спасибо, попробую, интересный вариант :)