Перейти к содержимому


Фотография
- - - - -

Условия вывода элементов в файле item_columns/_default.php

item_columns

В теме одно сообщение

#1 Mirotvoretz

Mirotvoretz

Отправлено 09 January 2017 - 21:10

Добрый день. Столкнулся с новой задачей.
 

Верстаю табличный вывод материалов в шаблоне teaser. "Шапка" таблицы общая и её вёрстка находится в файле item_columns/_default.php. У материалов есть различный набор элементов. Интересует условие вывода обозначения элемента в шапке сайта в зависимости от его наличия в тизере.

 

Более понятно поясню на картинке:

Screenshot_25.jpg

Например, если у материала нет значения "53", то и в шапке ячейка с "L, mm" не должна выводиться на экран. Соответственно весь этот столбец не будет виден.

 

Строки таблицы выводятся в файле item/teaser, а "шапка" таблицы - в файле item_columns/_default.php.

 

В teaser условие вывода в зависимости от наличия элемента на странице задаётся стандартно:

<?php if ($this->checkPosition('element')) : ?>
    <td>
            <?php echo $this->renderPosition('element'); ?>
    </td>
<?php endif; ?>

А можно ли в файле item_columns/_default.php прописать аналогичное условие? Т.е., если в ячейке таблицы нет элемента, то эта ячейка не выводится и в тизере и в "шапке" таблицы.

 

Кто сталкивался с такой задачей, подскажите решение.


Сообщение отредактировал Mirotvoretz: 09 January 2017 - 21:11

  • 0

Выгрузки из keys.so


#2 alexmixaylov

alexmixaylov

Отправлено 10 January 2017 - 15:21

А можно ли в файле item_columns/_default.php

1) лучше сделать свой шаблон и выбрать его в настройках категории. Иначе при следующем обновлении у вас дефолтные шаблоны могут затереться

 

2) вначале выводится шапка, после нее циклом выводятся строки таблицы - на тот момент еще не ясно получается будет ли эта ячейка или нет. Но шапка то уже выведена :)

здесь только на клиенте делать, например яваскрипт

                function searchCurort() {
                    var curortText = [];
                    $('td.curort').each(function () {
                        var isText = $.trim($(this).text());
                        if (isText.length > 1) {
                            curortText.push(isText);
                        }
                    });
                    if (curortText.length < 1) {
                        $('td.curort, #curort').hide();
                    }
                } 

я что то подобное писал себе

присваиваем нужной ячейке класс, в данном случае .curort

циклом пробегаемся по нужным ячейкам и в случае присутствия хотя бы в одной ячейке значения  показываем иначе скрываем 


  • 1




Click to return to top of page in style!