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

Список товаров - сетка и лист

  • 14 июня 2018 г.
  • разметка
    Код
    <div id="wrapper">
    <div id="navigation">
    <a href="#" id="list">Лист</a>
    <a href="#" id="grid">Сетка</a>
    </div>
    <div id="products">
    <div class="product">
    <div class="wrapper">
    <div class="image">Картинка товара</div>
    <div class="description">
    <div>Название товара</div>
    <p>Описание товара.</p>
    </div>
    </div>
    </div>
    </div>
    </div>


    js
    Код
    $(function() {
    var cc = $.cookie('list_grid');
    if (cc == 'g') {
    $('#products').addClass('grid');
    } else {
    $('#products').removeClass('grid');
    }
    });
    $(document).ready(function() {
    $('#grid').click(function() {
    $('#products').fadeOut(300, function() {
    $(this).addClass('grid').fadeIn(300);
    $.cookie('list_grid', 'g');
    });
    return false;
    });

    $('#list').click(function() {
    $('#products').fadeOut(300, function() {
    $(this).removeClass('grid').fadeIn(300);
    $.cookie('list_grid', null);
    });
    return false;
    });

    });
    • 14 июня 2018 г. , редакция: 15 июня 2018 г.
    • Дополню, что в примере используется cookie. В "коробке" ссылка на скрипт, обрабатывающий куки через Jquery, есть. Но по-умолчанию доступен только для пользователей категории администраторы. Поэтому можно файл /themes/functions/show_js.php вынести в кастомную тему и уже в нём подключение скрипта вынести за рамки условия (строка 53):
      Код
      if ($this->diafan->_users->useradmin)
      {
      echo '<script type="text/javascript" src="//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js" charset="UTF-8"></script>
      сделав вот так:
      Код

      echo '<script type="text/javascript" src="//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js" charset="UTF-8"></script>

      if ($this->diafan->_users->useradmin)
      {
      Тогда код, представленный выше, будет работать в полном объёме, запоминая выбор пользователя.

      Гарик дополнил про обновления (важное замечание). Да, когда-нибудь /themes/functions/show_js.php может и обновиться. И Вы при такой реализации не получите обновлений. Файл будет, но приоритет будет получать файл в /custom. Поэтому лучше подключать эту библиотеку всё же отдельно в шаблонах до файла со скриптом, написанным выше.
      Код
      echo '<script src="//yandex.st/jquery/cookie/1.0/jquery.cookie.min.js"></script>
      <script>
      // код, что выше
      .......
      </script>
      или способом, который советует ниже Гарик.
      • 14 июня 2018 г.
      • Ну тогда это решение просто напрашивается в коробку....
      • 15 июня 2018 г. , редакция: 15 июня 2018 г.
      • Лучше создать если нет в теме блок scrpit.php и вставить его через show_include. Изменяя системный show_js, мы осознанно отказываемся от системных обновлений в этом файле.

        /themes/blocks/script.php -> <insert name="show_include" file="script">

Новости

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

Форум