Вход • Регистрация

Вывод списка товаров в версии 5.4

  • 03 марта 2015 г. , редакция: 03 марта 2015 г.
  • Доброго всем времени, господа!
    Подскажите пожалуйста... никак не могу разобраться с отображалкой списка товаров в 5.4... по идее, вот такой код должен разбить список товаров на таблички по четыре столбика, правильно?

    Код
    $iCnt = 0;
    echo '<table border="1" cellspacing="0" cellpadding="0" style="padding:0px 0px 0px 0px;margin:0px 0px 0px 0px;" width="100%">';
    foreach ($rows as $value)
    {
    $iCnt++;
    if ($iCnt == 1) {
    echo '<tr align="center" style="vertical-align:top">';
    echo '<td width="25%" style="padding-right:0px;paddind-top:0px;">';
    }
    if (($iCnt == 2) or ($iCnt == 3) or ($iCnt == 4)) {
    echo '<td width="25%" style="padding-left:0px;padding-right:0px;margin-right:0px;paddind-top:0px;">';
    }
    if ($iCnt == 5) {
    $iCnt = 1;
    echo '</tr></table>';
    echo '<table border="0" cellspacing="0" cellpadding="0" style="padding:0px 0px 0px 0px;margin:0px 0px 0px 0px;" width="100%">';
    echo '<tr align="center" style="vertical-align:top;">';
    echo '<td width="25%" style="padding-right:0px;paddind-top:0px;">';
    }
    echo $iCnt; // А по идее вот сюда анонс товара нужно рисовать...
    echo '</td>';

    }
    if ($iCnt == 1) {
    echo '<td width="25%" style="padding-left:10px">&nbsp;</td><td width="25%" style="padding-left:10px">&nbsp;</td><td width="25%" style="padding-left:10px">&nbsp;</td>';
    }
    if ($iCnt == 2) {
    echo '<td width="25%" style="padding-left:10px">&nbsp;</td><td width="25%" style="padding-left:10px">&nbsp;</td>';
    }
    if ($iCnt == 3) {
    echo '<td width="25%" style="padding-left:10px">&nbsp;</td>';
    }
    echo '</tr></table>';
    //

    но ведь этого не происходит... хоть ты тресни... и не погу понять почему
    • 03 марта 2015 г.
    • Ух ты как все интересно... оказывается товары изначально кладутся в многомерный массив в четыре кучки... ))))) Нука...нука... интересно :)
      • 03 марта 2015 г.
      • В общем, может быть кому-нибудь пригодиться, для того, чтобы разбить списки товаров на любое количество столбиков, с ровными отступами между строками из анонсов товаров нужно извернуться примерно вот так:
        Код
        $iCnt = 0; // Счетчик текущего столбика нашей таблички для разделения товаров
        echo '<table border="1" cellspacing="0" cellpadding="0" style="padding:0px 0px 0px 0px;margin:0px 0px 0px 0px;" width="100%">';
        foreach ($rows as $value) // Перебор четырех кучек товаров, в которые оные свалены циклом в коробочной вьюшке...
        {
        foreach ($value as $row) // Перебор товаров, сваленных в ту или иную кучку... см. верхний цикл...
        {
        $iCnt++; // Инкрементируем счетчик столбиков...
        if ($iCnt == 1) {
        echo '<tr align="center" style="vertical-align:top">';
        echo '<td width="25%" style="padding-right:0px;paddind-top:0px;">';
        }
        if (($iCnt == 2) or ($iCnt == 3) or ($iCnt == 4)){
        echo '<td width="25%" style="padding-left:0px;padding-right:0px;margin-right:0px;paddind-top:0px;">';
        }
        if ($iCnt == 5) {
        $iCnt = 1;
        echo '</tr></table>';
        echo '<table border="1" cellspacing="0" cellpadding="0" style="padding:0px 0px 0px 0px;margin:10px 0px 0px 0px;" width="100%">';
        echo '<tr align="center" style="vertical-align:top;">';
        echo '<td width="25%" style="padding-right:0px;paddind-top:0px;">';
        }

        echo $iCnt; // А по идее вот сюда анонс товара нужно рисовать...

        echo '</td>'; // Закроем текущую ячейку разбивающей товары таблички...

        } // Закончился цикл перебора текущей кучи...

        } // Закончился цикл перебора кучек с товарами...

        // Дорисовываем недостающие ячейки в последней строке таблицы с анонсами товаров...
        if ($iCnt == 1) {
        echo '<td width="25%" style="padding-left:10px">&nbsp;</td><td width="25%" style="padding-left:10px">&nbsp;</td><td width="25%" style="padding-left:10px">&nbsp;</td>';
        }
        if ($iCnt == 2) {
        echo '<td width="25%" style="padding-left:10px">&nbsp;</td><td width="25%" style="padding-left:10px">&nbsp;</td>';
        }
        if ($iCnt == 3) {
        echo '<td width="25%" style="padding-left:10px">&nbsp;</td>';
        }
        echo '</tr></table>';
        //

        Таким макаром, изменяя лишь пару строк кода, можно бодяжить вьюшки с разным количеством столбиков... :)
        • 04 марта 2015 г.
        • табличная верстка =) Добро пожаловать в прошлое!
          Еще предлагаю вам цены разные поставить и посмотреть сортировку по цене
        • 04 марта 2015 г.
        • Цитата
          if ($iCnt == 1) {
          echo '<tr align="center" style="vertical-align:top">';
          echo '<td width="25%" style="padding-right:0px;paddind-top:0px;">';
          }
          if (($iCnt == 2) or ($iCnt == 3) or ($iCnt == 4)){
          echo '<td width="25%" style="padding-left:0px;padding-right:0px;margin-right:0px;paddind-top:0px;">';
          }
          if ($iCnt == 5) {

          http://php.net/manual/ru/control-structures.elseif.php

          А по сути вопроса - разбить на 4 столбика (да хоть 100) это и в php лезть не надо. Валерий Викторович прально говорит - используйте css.
      • 03 марта 2015 г.
      • Павел, чем не устраивает вариант укладки в 4 столбца, который идет в дефолтном шаблоне? Его можно переделать в сколько угодно столбцов.
        • 03 марта 2015 г. , редакция: 03 марта 2015 г.
        • Валерий Викторович, мое почтение!
          Ну вот такой вот я противный... интересно же до самой сути докопаться... это во-первых...
          А во вторых... например, нужен вам будет отступ между строками с анонсами товаров... и как? А тут... одну циферку исправить и порядок....
        • 03 марта 2015 г. , редакция: 03 марта 2015 г.
        • Еще ньюанс... как выровнять строки стандартной вьюхи по горизонтали?... да никак практически, без танцев с бубнами...а тут хобана... и вуаля... уже все ровненько и аккуратненько...
          Вот пример того, как работает данный код:
          http://talisman72.ru/diafan/shop/aromaty-vostoka/vostochnye-balzamy-dlya-gub/
          • 03 марта 2015 г.
          • DrWeb не пустил по ссылке хотел красоту глянуть...
            • 04 марта 2015 г.
            • чтобы все блоки в строке были одинаковыми, то надо стили прописать. Смысл такой

              Код

              .tbl {display:table; table-layout:fixed; }
              .row {display:table-row; }
              .td {display: table-cell; vertical-align:middle; }


              Код

              <div class="tbl">
              <div class="row">
              <div class="td">tovar</div>
              <div class="td">tovar</div>
              <div class="td">tovar</div>
              <div class="td">tovar</div>
              </div>
              <div class="row">
              <div class="td">tovar</div>
              <div class="td">tovar</div>
              <div class="td">tovar</div>
              <div class="td">tovar</div>
              </div>
              </div>


              тогда они будут выровнены по высоте. Либо ставить фиксированные размеры блока товара.


            • 05 марта 2015 г.
            • А если использовать сразу <table> многие считают его пережитком, то не придётся лишние стили писать.
  • 05 марта 2015 г.
  • У меня верстка на бутстрапе. По 4 товара в строке. Что то странное творится с ней если сделать количество товаров на странице не 12 а например 40. Может кто знает как исправить? (например если сделать 40 товаров на страницу то в строке появляется 14-13-13-0 товаров и верстка жестко ползет, т.к. у меня есть товары с картинками и без и с разной длинной названия).
    Вот счетчик:
    Код
    $rows = array(array(), array(), array(), array());

    $t = 0;
    foreach ($result["rows"] as $row => $value)
    {
    if($t > 2) $t = 0;
    $rows[$t][] = $value;
    $t++;
    }

    Вот верстка:
    Код


    <div class="row">
    <div class="col-md-3">
    товар
    </div>
    <div class="col-md-3">
    товар
    </div>
    <div class="col-md-3">
    товар
    </div>
    <div class="col-md-3">
    товар
    </div>
    </div>
    • 05 марта 2015 г.
    • вообще-то, насколько понимаю, Вы выставили на 3 колонки:
      Код
      if($t > 2) $t = 0;

      Попробуйте
      Код
      if($t > 3) $t = 0;
      • 05 марта 2015 г.
      • тогда выходит по 3 товара:
        Код

        <div class="row">
        <div class="col-md-3">
        товар
        </div>
        <div class="col-md-3">
        товар
        </div>
        <div class="col-md-3">
        товар
        </div>
        </div>
  • 06 марта 2015 г.
  • Бесят эти shop-col. Всегда вырезаю этот код чтоб все шло по порядку.
    • 18 марта 2015 г.
    • Оно ж ровно только в теории. А когда разные описания, разные характеристики, один товар длинный и все под него ровняются и там дырки посреди сайта? Фу
      • 18 марта 2015 г.
      • Цитата
        Оно ж ровно только в теории. А когда разные описания, разные характеристики, один товар длинный и все под него ровняются и там дырки посреди сайта? Фу


        так-то оно да

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум