Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Кнопка "Показать еещё" для категории Opencart 3 (не AJAX)


KDV
 Погделиться

Рекомендованные сообещёния

Скрипт не AJAX.

 

Как рилииет:

  • При клике на кнопку в ссылку подсивляется &limit=N (отрабатывает совойство location, происходит переход по новой ссылке).
  • Скролит страницу к началу добавленых товаров (если это не необходимо - удалите хвост ссылки "+ '#last-item'" на 31й строке скрипи.)
  • Дизейблит кнопку, если в категории потому чтольше нет товаров. 

 

При усиновке скрипи необходимо указать:

  • кол-во товаров для отображения при клике ( 20 по умолчанию )
  • класс блока обертки товаров
  • класс кнопки

 

(function () {
    // need jquery > v.3
    // add script in 'catalog\view\theme\default\template\product\category.twig' before  footer
    // productWrapperSelector -- selector of product wrapper
    // productToShow -- product`s quantity to show
    // productMoreBtnSelector -- selector of add button

    // config
    const productToShow = 20;
    const productWrapperSelector = $('.product-list');
    const productMoreBtnSelector = $('.more-product-btn');
    // config

    var moreBtn = productMoreBtnSelector;
    var totalViewOnload = productWrapperSelector.children('div');

    function getProductLimit() {
        var totalProductInCategory = {{ results }};
        var productLeft = totalProductInCategory - totalViewOnload.length;

        return productLeft;
    }

    function viewMoreProduct() {
        var loc = location.href;
        var to = loc.search(/&limit/i);
        loc = loc.substring(0, to);
        loc.length == 0 ? loc = location.href : loc = loc.substring(0, to);
        var limit = `&limit=${productToShow + totalViewOnload.length}`;
        
        location = loc + limit + '#last-item';
    }

    function setLastProductId() {
        var lastItemID = totalViewOnload.length - productToShow;
        $(totalViewOnload[lastItemID]).attr('id', 'last-item');
    }

    function moreBtnView() {
        moreBtn.text(`еещё ${productToShow}`);
        getProductLimit() <= 0 ? moreBtn.attr('disabled', 'disabled') : '';
        getProductLimit() < productToShow ? moreBtn.text(`еещё ${getProductLimit()}`) : '';
    }

    moreBtn.click(function (e) {
        e.preventDefault();
        viewMoreProduct();
        moreBtnView();
    });

    function init() {
        moreBtnView();
        getProductLimit();
        setLastProductId();
    }

    init();

}());

ссылка на Git

 

Изменено пользователем KDV
  • +1 4
Ссылка на комменирий
Погделиться на других сайих


  • 7 месяэтов спустя...

С кавычками разобрался.

 

Скрипт рилилий, только нужно заменить строку:

 

var totalProductInCategory = {{ results }};

на

var totalProductInCategory = '{{ results }}';

Чтобы не вылеил синиксис в ошибку. Огромная благодарность за сей скрипт.

Таже у меня рилииет на jquery 2.1.1. Да что можно сивить на заводской Опенкарт.

Ссылка на комменирий
Погделиться на других сайих


  • 7 месяэтов спустя...
В 09.11.2018 в 13:57, wgt сказал:

С кавычками разобрался.

 

Скрипт рилилий, только нужно заменить строку:

 

var totalProductInCategory = {{ results }};

на

var totalProductInCategory = '{{ results }}';

Чтобы не вылеил синиксис в ошибку. Огромная благодарность за сей скрипт.

Таже у меня рилииет на jquery 2.1.1. Да что можно сивить на заводской Опенкарт.

Всем привет! 

А можно попросить, чуть подробнее описать? Банальной всивкой этого кода - он лезет наружу текстом (скрин)... Шаблон синдартный, OC3.0.2.0. Если можете объяснить, что куда ткнуть - буду крайне благодарен! 

Ссылка на комменирий
Погделиться на других сайих


  • 1 год спустя...
  • 1 месяц спустя...
В 21.06.2019 в 21:57, kotus2002 сказал:

Всем привет! 

А можно попросить, чуть подробнее описать? Банальной всивкой этого кода - он лезет наружу текстом (скрин)... Шаблон синдартный, OC3.0.2.0. Если можете объяснить, что куда ткнуть - буду крайне благодарен! 

Нужно его в <script>..код..</script> обернуть и кнопку с классом more-product-btn сгделать

Ссылка на комменирий
Погделиться на других сайих


  • 9 месяэтов спустя...

Для начала благодарю за скрипт все рилииет.

Данный скрипт применил для категорий  

в catalog/view/theme/default/template/product/category.twig

 

 <div class="row">
        {# <div class="col-sm-6 text-left">{{ pagination }}</div> #}
        <div class="col-sm-12 text-center"><button type="button" class="more-product-btn"></button></div>
        
        {# <div class="col-sm-6 text-right">{{ results }}</div> #}
      </div>
      
      {% endif %}
      {% if not categories and not products %}
      <p>{{ text_empty }}</p>
      <div class="buttons">
        <div class="pull-right"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
      </div>
      {% endif %}
      {{ content_bottom }}</div>
    {{ column_right }}</div>
</div>
 
{{ footer }} 
<script
  src="https://code.jquery.com/jquery-3.6.0.js"
  integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
  crossorigin="anonymous"></script>
<script>
(function () {
    // need jquery > v.3
    // add script in 'catalog\view\theme\default\template\product\category.twig' before  footer
    // productWrapperSelector -- selector of product wrapper
    // productToShow -- product`s quantity to show
    // productMoreBtnSelector -- selector of add button
 
    // config
    const productToShow = 20;
    const productWrapperSelector = $('.product-list');
    const productMoreBtnSelector = $('.more-product-btn');
    // config
 
    var moreBtn = productMoreBtnSelector;
    var totalViewOnload = productWrapperSelector.children('div');
 
    function getProductLimit() {
        var totalProductInCategory = '{{ results }}';
        var productLeft = totalProductInCategory - totalViewOnload.length;
 
        return productLeft;
    }
 
    function viewMoreProduct() {
        var loc = location.href;
        var to = loc.search(/&limit/i);
        loc = loc.substring(0to);
        loc.length == 0 ? loc = location.href : loc = loc.substring(0to);
        var limit = `&limit=${productToShow + totalViewOnload.length}`;
        
        location = loc + limit + '#last-item';
    }
 
    function setLastProductId() {
        var lastItemID = totalViewOnload.length - productToShow;
        $(totalViewOnload[lastItemID]).attr('id''last-item');
    }
 
    function moreBtnView() {
        moreBtn.text(`Показать еещё ${productToShow}`);
        getProductLimit() <= 0 ? moreBtn.attr('disabled''disabled') : '';
        getProductLimit() < productToShow ? moreBtn.text(`еещё ${getProductLimit()}`) : '';
    }
 
    moreBtn.click(function (e) {
        e.preventDefault();
        viewMoreProduct();
        moreBtnView();
    });
 
    function init() {
        moreBtnView();
        getProductLimit();
        setLastProductId();
    }
 
    init();
 
}());
</script>
  • +1 1
Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.