ФорумПрограммированиеPHP для идиотов → Как виджету добавить свои 5 копеек в Page_Controller?

Как виджету добавить свои 5 копеек в Page_Controller?

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 2 февраля 2010 г. 20:53

    Есть шаблонная система. Она преобразовывает [:foo:] в <? echo $this->get('foo') а {:bar():} в $obj = new Widget_Bar; echo $obj->show();

    Из контроллеров подключаются JS/CSS-файлы, устанавливается pageTitle, META-информация. Потом все это гавно выводится в главном шаблоне. Пример такого шаблона:

    <html>
    <head>
    [:res.css:]
    [:res.js:]
    ….
    {:forum_lastposts():}
    ….


    И вот мне понадобилось из виджета менять pageTitle или добавлять JS. Проблема в том, что когда виджет будет запущен, шаблонная переменная res.css уже будет выведена.

    Проблему можно решить буферизацией вывода, и str_replace('%res.css%', Storage::getCss());
    Но я не хочу каждый раз делать str_replace. Как быть?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 2 февраля 2010 г. 22:46, спустя 1 час 53 минуты 35 секунд

    а, вот еще вариант: парсить head отдельно после $body. А потом делать конкатенацию $head . $body и это выводить.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 февраля 2010 г. 22:51, спустя 4 минуты 51 секунду

    в школе то этого не проходили чтоли? а в исходники смарти заглянуть?)

    там же все написано было!

    :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 2 февраля 2010 г. 23:01, спустя 9 минут 45 секунд

    я смарти никогда не пользовался, тьфу-тьфу. Меня Twig разбаловал своим наследованием шаблонов.

    Ты имеешь в виду что-то типа "{popup_init src="/javascripts/overlib.js"}"?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 февраля 2010 г. 23:05, спустя 3 минуты 57 секунд

    Абырвалг, да нет, меня просто "прет" …
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!