COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

rasdalbai

Соучастники
  • Публикации

    1
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем rasdalbai

  1. В 10.03.2017 at 19:03, jaffagold сказал:

    Смотрите, обе кнопки неактивные, ни на что не влияют. Чтобы они влияли нужен клик по ним.

      Скрыть содержимое

              <div class="btn-group btn-group-sm">
                <button type="button" id="list-view" class="btn btn-default" data-toggle="tooltip" title="<?php echo $button_list; ?>"><i class="fa fa-th-list"></i></button>
                <button type="button" id="grid-view" class="btn btn-default" data-toggle="tooltip" title="<?php echo $button_grid; ?>"><i class="fa fa-th"></i></button>
              </div>

    Далее с 73 строки идет вывод товаров

      Скрыть содержимое

          <div class="row">
            <?php foreach ($products as $product) { ?>
            <div class="product-layout product-list col-xs-12">
              <div class="product-thumb">
                <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" class="img-responsive" /></a></div>
                <div>
                  <div class="caption">
                    <h4><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></h4>
                    <p><?php echo $product['description']; ?></p>
                    <?php if ($product['price']) { ?>
                    <p class="price">
                      <?php if (!$product['special']) { ?>
                      <?php echo $product['price']; ?>
                      <?php } else { ?>
                      <span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
                      <?php } ?>
                      <?php if ($product['tax']) { ?>
                      <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
                      <?php } ?>
                    </p>
                    <?php } ?>
                    <?php if ($product['rating']) { ?>
                    <div class="rating">
                      <?php for ($i = 1; $i <= 5; $i++) { ?>
                      <?php if ($product['rating'] < $i) { ?>
                      <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span>
                      <?php } else { ?>
                      <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span>
                      <?php } ?>
                      <?php } ?>
                    </div>
                    <?php } ?>
                  </div>
                  <div class="button-group">
                    <button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
                    <button type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-heart"></i></button>
                    <button type="button" data-toggle="tooltip" title="<?php echo $button_compare; ?>" onclick="compare.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-exchange"></i></button>
                  </div>
                </div>
              </div>
            </div>
            <?php } ?>
          </div>

    И изначально, по дефолту он списком ( я вам говорил про это)

    Но тут вступает в действие common.js

      Скрыть содержимое

        // Product List
        $('#list-view').click(function() {
            $('#content .product-grid > .clearfix').remove();

            $('#content .row > .product-grid').attr('class', 'product-layout product-list col-xs-12');
            $('#grid-view').removeClass('active');
            $('#list-view').addClass('active');

            localStorage.setItem('display', 'list');
        });

        // Product Grid
        $('#grid-view').click(function() {
            // What a shame bootstrap does not take into account dynamically loaded columns
            var cols = $('#column-right, #column-left').length;

            if (cols == 2) {
                $('#content .product-list').attr('class', 'product-layout product-grid col-lg-6 col-md-6 col-sm-12 col-xs-12');
            } else if (cols == 1) {
                $('#content .product-list').attr('class', 'product-layout product-grid col-lg-4 col-md-4 col-sm-6 col-xs-12');
            } else {
                $('#content .product-list').attr('class', 'product-layout product-grid col-lg-3 col-md-3 col-sm-6 col-xs-12');
            }

            $('#list-view').removeClass('active');
            $('#grid-view').addClass('active');

            localStorage.setItem('display', 'grid');
        });

        if (localStorage.getItem('display') == 'list') {
            $('#list-view').trigger('click');
            $('#list-view').addClass('active');
        } else {
            $('#grid-view').trigger('click');
            $('#grid-view').addClass('active');
        }

    Он делает несколько дел.

    Реагирует на клики по кнопкам, устанавливает класс  активной кнопке, снимает с неактивной

    Также он устанавливает разметку (сетка или список)

    А в самом конце, смотрите, он записывает в localStorage выбор пользователя (сетка или список) и этот выбор сохраняется в куках на компьютере пользователя.

    Сначала, как видите, там идет блок, где устанавливается разметка для List

    Потом идет блок для Grid ( причем там разметка сложнее, хотя ничего сложного, о ней в конце)

    А потом происходит еще одна штука.

    Если пользователь только открыл сайт, кликов по кнопкам не было, то common.js анализирует содержание localStorage

    Если там сохранено (с прежних визитов пользователя), List, то он устанавливает List ( список)

    Иначе ( то есть, если в localStorage сохранено Grid или там еще вообще нет никаких данных ( первый визит или куки почищены))

    он устанавливает Grid.

    Теперь о разметке Grid ( выделена красным)

    Она меняется в зависимости от наличия сайдбар-ов (боковых колонок)

    Если их две (слева и справа), то разметка первого типа, если одна- второго, если нет сайдбар-ов, то третьего.

    Если вы твердо решили, то выходит, что кнопки можно выкидывать совсем.

    Принудительно устанавливать нужный вариант разметки в localStorage.

    При желании устанавливать в category.tpl предполагаемый вариант разметки ( скорее всего второй вариант Grid)

    Обновлять кеш модификаторов.

    И проверять, что получилось.

     

     

     

    Большое спасибо.

    Помогло.