Добавление строки с кодом в список объявлений

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

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

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

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

Добавление строки с кодом в список объявлений

Сообщение Pavel555 » 04 май 2014, 13:40

Уважаемые разработчики! Как добавить строку со своим HTML-кодом после N-ной по счету строки списка объявлений? Насколько я понял, это в файле /protected/modules/apartments/views/widgetApartments_list.php? Подскажите, пожалуйста, как реализовать?
Заранее спасибо!
Pavel555
Прохожий
 
Сообщения: 36
Зарегистрирован: 13 апр 2014, 11:01
Очки репутации: 0

Re: Добавление строки с кодом в список объявлений

Сообщение Xpycm » 04 май 2014, 13:52

Если посмотрите на содержимое приведённого файла внимательнее, то увидите такие строки:
Код: Выделить всё
$this->render('widgetApartments_list_item', array('criteria' => $criteria)); 

и
Код: Выделить всё
$this->render('widgetApartments_list_map', array('criteria' => $criteria)); 


В том же каталоге /protected/modules/apartments/views/ лежат одноимённые файлы.

В файле protected\modules\apartments\views\widgetApartments_list_item.php увидите цикл foreach.

До начала тела цикла объявляете переменную, например, $i = 1;
Перед завершением цикла увеличиваете значение объявленной переменной на 1 ($i++);
Ну и в теле цикла проверка, что-то вроде:
Код: Выделить всё
if ($i==9) { echo '<script>alert(1111);</script>'; } 


Почитайте:
http://www.php.net/manual/ru/control-st ... oreach.php
http://www.php.net/manual/ru/language.o ... rement.php
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Добавление строки с кодом в список объявлений

Сообщение Pavel555 » 04 май 2014, 14:15

Спасибо за быстрый ответ!
Ваш ответ относится к вариантам:
$modeListShow == 'block'
и
$modeListShow == 'map'

А как реализовать в случае table?
Pavel555
Прохожий
 
Сообщения: 36
Зарегистрирован: 13 апр 2014, 11:01
Очки репутации: 0

Re: Добавление строки с кодом в список объявлений

Сообщение Xpycm » 04 май 2014, 14:22

Не припомню, чтобы в CGridView можно было вставлять произвольные строки. А это значит, что вместо:
Код: Выделить всё
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'ap-view-table-list',
    'dataProvider' => $dataProvider,
    'rowCssClassExpression' => '$data->getRowCssClass()',
    'enablePagination'=>false,
    'selectionChanged'=>'js:function(id) {
        $currentGrid = $("#"+id);
        $rows = $currentGrid.find(".items").children("tbody").children();
        $selKey = $.fn.yiiGridView.getSelection(id);

        if ($selKey.length > 0) {
            $.each($currentGrid.find(".keys").children("span"), function(i,el){
                if ($(this).text() == $selKey) {
                    $(this).attr("data-rel", "selected");
                }
                else {
                    $(this).removeAttr("data-rel");
                }
            });
        }

        $.each($currentGrid.find(".keys").children("span"), function(i,el){
            var attr = $(this).attr("data-rel");
            if (typeof attr !== "undefined" && attr !== false) {
                $currentGrid.find(".items").children("tbody").children("tr").eq(i).addClass("selected");
            }
            else {
                $currentGrid.find(".items").children("tbody").children("tr").eq(i).removeClass("selected");
            }
        });

        return false;
    }'
,
    'template' => '{items}{pager}',
    'columns' => array(
        /*array(
            'name' => 'id',
        ),
        array(
            'header' => tc('Photo'),
            'value' => '(isset($data->images) && count($data->images) > 0) ? \'<img alt="'.tc('With photo').'" src="'.Yii::app()->baseUrl.'/images/with-photo.png">\' : tc("No")',
            'type' => 'raw'
        ),*/
        array(
            'header' => '',
            'type' => 'raw',
            'value' => 'Apartment::returnMainThumbForGrid($data)'
        ),
        array(
            'header' => tt('Type', 'apartments'),
            'value' => 'Apartment::getNameByType($data->type)'
        ),
        array(
            'header' => tt('Apartment title', 'apartments'),
            'value' => 'CHtml::link($data->getTitle(), $data->url)',
            'type' => 'raw'
        ),
        array(
            'header' => tt('Address', 'apartments'),
            'value' => '$data->getStrByLang("address")',
            'visible' => $canShowAddress,
        ),
        array(
            'header' => tt('Object type', 'apartments'),
            'type' => 'raw',
            'value' => '$data->getObjType4table()'
        ),
        array(
            'header' => tt('Square', 'apartments'),
            'type' => 'raw',
            'value' => '$data->getSquareString()',
            //'value' => 'Yii::t("module_apartments", "total square: {n}", $data->square)'
        ),
        array(
            'header' => tt('Price', 'apartments'),
            'value' => '$data->getPrettyPrice()'
        ),
        array(
            'header' => tt('Floor', 'apartments'),
            'type' => 'raw',
            'value' => '$data->floor == 0 ? tc("floors").":&nbsp;".$data->floor_total : $data->floor."/".$data->floor_total ;',
        ),
    )
)
);
 


будете сами "рисовать" табличку по аналогии с "block" через foreach
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50


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

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

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

cron