Сквозные блоки
Сквозные блоки
Всем привет.
Вот у меня на сайте около 5 контроллеров (новости, статьи, спец. предложения...).
У новостей и статей есть по одному сквозному блоку. Сквозной блок новостей должен отображаться на всех страницах сайта, а сквозной блок статей на всех страницах кроме главной и статей.
Вот я передаю сквозные блоки так, в файле components/Controller.php делаю выборку для всех сквозных блоков, рендерю их в своих представлениях и вызываю в views/layouts/main.php.
Но при такой схеме выпадает модель. Да и файл components/Controller.php засоряется.
Может кто подскажет как такие вещи правильно делаются в YII? То есть задача - передавать сквозные блоки и выводить их на нужных страницах.
Вот у меня на сайте около 5 контроллеров (новости, статьи, спец. предложения...).
У новостей и статей есть по одному сквозному блоку. Сквозной блок новостей должен отображаться на всех страницах сайта, а сквозной блок статей на всех страницах кроме главной и статей.
Вот я передаю сквозные блоки так, в файле components/Controller.php делаю выборку для всех сквозных блоков, рендерю их в своих представлениях и вызываю в views/layouts/main.php.
Но при такой схеме выпадает модель. Да и файл components/Controller.php засоряется.
Может кто подскажет как такие вещи правильно делаются в YII? То есть задача - передавать сквозные блоки и выводить их на нужных страницах.
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Сквозные блоки
виджет?
Re: Сквозные блоки
Что виджет?
У меня для этого не используется виджет. А о каком виджете речь?
У меня для этого не используется виджет. А о каком виджете речь?
Re: Сквозные блоки
выводите эти блоки с помощью виджетов
Re: Сквозные блоки
Ладно. А у этих виджетов есть название?
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Сквозные блоки
да - MySuperWidget
Re: Сквозные блоки
Смысл в том, что блоки новости и статьи вынести в виджеты типаMoonlight писал(а):Ладно. А у этих виджетов есть название?
LastNewsWidget
LastArticlesWidget
А потом уже эти виджеты подключать там, где нужно.
- flashimage
- Сообщения: 1517
- Зарегистрирован: 2011.01.23, 12:43
Re: Сквозные блоки
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.
Re: Сквозные блоки
там же названия разделов с якорями, так что можно сразу дать на пункт 3 ссылкуflashimage писал(а):http://www.yiiframework.com/doc/guide/1 ... ion.create Пункт 3
http://www.yiiframework.com/doc/guide/1 ... eate#sec-4
Re: Сквозные блоки
А не проще ли сделать нужные блоки прямо в лейаутах? Без всяких виджетов.
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Сквозные блоки
ага, только верстальщику потом объясните что бы он там ниче не трогал и как хотел так и разбирался
Re: Сквозные блоки
а потом во всей этой каше разбираться?andreyrud писал(а):А не проще ли сделать нужные блоки прямо в лейаутах? Без всяких виджетов.
сомнительное удовольствие
Re: Сквозные блоки
Ага, с виджетами понял. Но они ведь как правило 1 раз пишутся и больше их трогать не надо, всё настраивается с помощью их агрументов. А вёрстка блока последних новостей меняется из сайта в сайт. То есть на одном сайте мой виджет генерирует один html-код, а на другом я уже иду в мой LastNewsWidget и переписываю html-структуру.
А объясните мне просто в теории ситуацию с лейаутами. Я через них тоже пытался сделать. Вот если контроллер News использует '//layouts/column2', то из этого контроллера нужно передавать в column2 массив с последними новостями для сквозного блока. Я к тому, что это будет отображаться только в контроллере News, а не на всех страницах. Как можно передать в column2 значение так, чтобы блок был виден везде?
А объясните мне просто в теории ситуацию с лейаутами. Я через них тоже пытался сделать. Вот если контроллер News использует '//layouts/column2', то из этого контроллера нужно передавать в column2 массив с последними новостями для сквозного блока. Я к тому, что это будет отображаться только в контроллере News, а не на всех страницах. Как можно передать в column2 значение так, чтобы блок был виден везде?
-
- Сообщения: 60
- Зарегистрирован: 2012.08.15, 15:41
Re: Сквозные блоки
У вас же есть какой-нибудь контроллер, от которого вы наследуете все контроллеры? В нем можете, например, создать public переменную и там же в нее грузить массив последних новостей, а в layout получать его как $this->массив. Что-то в этом духе. Но виджеты - лучше.А объясните мне просто в теории ситуацию с лейаутами. Я через них тоже пытался сделать. Вот если контроллер News использует '//layouts/column2', то из этого контроллера нужно передавать в column2 массив с последними новостями для сквозного блока. Я к тому, что это будет отображаться только в контроллере News, а не на всех страницах. Как можно передать в column2 значение так, чтобы блок был виден везде?
Re: Сквозные блоки
Про такой контроллер я уже писал, да он есть, но там отсутствует модель, и мне кажется тот контроллер не для такого предназначен.
Ну понятно, буду юзать виджеты, всем спасибо.
Ну понятно, буду юзать виджеты, всем спасибо.
-
- Сообщения: 60
- Зарегистрирован: 2012.08.15, 15:41
Re: Сквозные блоки
По большому счету да, не для такого, для такого - виджеты. Но если очень не хотеть виджеты по религиозным соображениям, то можно так