Новости в сайдбаре через виджет

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Новости в сайдбаре через виджет

Сообщение idencial » 20 авг 2013, 12:50

Добрый день!

Предположим, что у сайта есть сайдбар (справа или слева от main-content)
Подскажите, пожалуйста, как грамотнее вывести новости в сайдбаре через виджет.

Понимаю, что нужно сделать выборку по критерию, а потом пройтись через foreach, но есть неясности.

Например, я создал шаблон widgetNews_slist.php по аналогии с widgetNews_list.php, изменив формат вывода и дизайн (предполагается что будет 5 новостей списком без анонса).

потом добавить в модель функцию вывода новостей по критерию, например, getNewsWithLimit()

Далее, вероятно нужно создать компонент под этот виджет по аналогии с NewsWidget.php и в нем в методе run использовать созданный getNewsWithLimit()?

А потом в нужном месте сайдбара подключать

Yii::import('application.modules.News.components.*');
$this->widget('NewsSidebar');

так? или я путаюсь?

P.S.
и еще один вопрос.
Если я сайдбар добавил в шаблон inner.php, то какое условие нужно использовать чтобы показывать его не во всех разделах, а только в некоторых.
Например, в разделе "Новости" или "Поиск по карте" не показывать
idencial
Незнакомец
 
Сообщения: 13
Зарегистрирован: 19 авг 2013, 11:38
Очки репутации: 0

Re: Новости в сайдбаре через виджет

Сообщение Xpycm » 20 авг 2013, 13:11

Добрый день.

1) Да, что-то типа такого, как Вы описали.

Так-то у нас уже есть виджет новостей (protected\modules\news\components\NewsWidget.php).
Вызывается на инфо-страницах (protected\modules\menumanager\views\view.php), если он указан при добавлении страницы:
Код: Выделить всё
if ($model->widget){
    echo '<div class="clear">';
    Yii::import('application.modules.'.$model->widget.'.components.*');
    $this->widget(ucfirst($model->widget).'Widget');
    echo '</div>';
}
 


2) Как вариант добавить в верху файла protected\components\Controller.php
Код: Выделить всё
public $showNewsWidget = false; 


В файле inner.php отображение виджета обернуть в условие:
Код: Выделить всё
if ($this->showNewsWidget) {
    # здесь вызов виджета
} 


Ну и в нужных контроллерах модулей в требуемый экшен или метод init() выставлять:
Код: Выделить всё
$this->showNewsWidget = true; 


Т.е если нужно в разделе "Новости", то в контроллер protected\modules\news\controllers\MainController.php добавляете:
Код: Выделить всё
public function init() {
   $this->showNewsWidget = true;
   parent::init();
}
 


Либо для определённого экшена, например: actionIndex().
Было:
Код: Выделить всё
public function actionIndex(){
    $model = new $this->modelName;
    $result = $model->getAllWithPagination();

    $this->render('index', array(
        'items' => $result['items'],
        'pages' => $result['pages'],
    ));
}
 


Станет:
Код: Выделить всё
public function actionIndex(){
        $this->showNewsWidget = true;
     $model = new $this->modelName;
    $result = $model->getAllWithPagination();

    $this->render('index', array(
        'items' => $result['items'],
        'pages' => $result['pages'],
    ));
}
 



Для раздела "Поиск на карте" actionView() в файле protected\modules\menumanager\controllers\MainController.php. Только по ID нужно ещё проверку добавить. Насколько я помню ID страницы "Поиск на карте" равен 12.
Т.е будет условие:
Код: Выделить всё
if ($id == 12)
   $this->showNewsWidget = true; 
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Новости в сайдбаре через виджет

Сообщение idencial » 20 авг 2013, 13:36

Спасибо большое за ответ!
idencial
Незнакомец
 
Сообщения: 13
Зарегистрирован: 19 авг 2013, 11:38
Очки репутации: 0


Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

cron