Страница 1 из 1

Добавить класс к body

СообщениеДобавлено: 19 мар 2016, 13:44
Aleksander
Добрый день.
Подскажите, как добавить класс к body при отображении списка объявлений с картой?

Re: Добавить класс к body

СообщениеДобавлено: 24 мар 2016, 03:31
Koduc
Тут надо понимать такую вещь - что изменение отображения списка объявлений (если переключает пользователь кнопочками) - происходит без перезагрузки страницы, перезагружается только отдельный блок на странице.
Со всеми вытекающими..
Если вопрос актуален при таком раскладе - напишите, скину javascript код для добавления/удаления класса у body

Re: Добавить класс к body

СообщениеДобавлено: 24 мар 2016, 11:55
Aleksander
Код наподобие такого в файле widgetApartments_list.php ?
Код: Выделить всё
$('#list_map_block').each(function(){
            $(
'body').addClass('maps-list');        
            });      

А нет что нибудь из вариантов php, как в шаблоне atlas?
Код: Выделить всё
echo ($this->htmlPageId == 'index') ? 'b_mainpage' $this->htmlPageId;  

То что с картой будет перезагрузка полностью страницы - оно так и надо, а то как то не хотелось бы, чтобы клиент видел как сайт ломается из одного вида в другой. *SCRATCH*

Re: Добавить класс к body

СообщениеДобавлено: 25 мар 2016, 09:13
Koduc
Если именно через php, то можно попробовать такой вариант.
Файл /protected/components/Controller.php
Добавляем там вначале где идут определения переменных новую переменную, например: public $isMapShow = false;
(по умолчанию false обязательно).
В файле /themes/classic/views/modules/apartments/views/widgetApartments_list.php
ТАм в самом начале есть строка: $modeListShow = $this->modeListShow ? $this->modeListShow : User::getModeListShow();
После нее добавляем:
Код: Выделить всё
if($modeListShow == 'map'$this->isMapShow true;  


НУ и теперь правим файл где у нас лежит body: /themes/classic/views/layouts/main.php
И вместо <body> вписываем что-то типа такого:
Код: Выделить всё
<body class="<?php echo $this->isMapShow "body-class-with-map" ""?>">

Re: Добавить класс к body

СообщениеДобавлено: 25 мар 2016, 11:44
Aleksander
Ошибка 500
Не определено свойство "ApartmentsWidget.isMapShow". *NO*
Я так понял надо еще что-то добавить в ApartmentsWidget.php?

Re: Добавить класс к body

СообщениеДобавлено: 26 мар 2016, 08:43
Koduc
А, там через виджет, точно.
Замените $this->isMapShow на Yii::app()->controller->isMapShow

Re: Добавить класс к body

СообщениеДобавлено: 26 мар 2016, 18:07
Aleksander
Здóрово! *THUMBS UP* Спасибо вам большое :-)