Кнопка показать еще в категории Opencart

категория: , Полезности


Опубликовано: 14.06.2017 Просмотров: 2992 Комментарии: 4


Кнопка показать еще в категории Opencart

В категории Opencart есть пагинация. С помощью нее мы переходим на следующие страницы в каталоге товаров. Но часто многим пагинация не нужна. Есть альтернативный вариант показать пользователю больше товаров не переходя на постраничную навигацию. Этот спос


В категории Opencart есть пагинация. С помощью нее мы переходим на следующие страницы в каталоге товаров. Но часто многим пагинация не нужна, и всем известно что переход на следующие страницы порождает дубли категорий в опенкарте.

Есть альтернативный вариант показать пользователю больше товаров не переходя на постраничную навигацию. Этот способ мы назвем подгрузка товаров или же Кнопка показать больше или показать еще 20 товаров, где 20 - это лимит на страницу.

В чем преимущества?

  • Более быстрая подгрузка товаров, чем переходя на по страницам
  • Отсутствуют дубли категорий (если убрать пагинацию)
  • Покупатель не покидает товары с первой страницы, очень удобно если надо сравнить товары или вернуть к какому-то повторно. (Смотрите решение - продвинутое добавление в закладки)

Как видим преимуществ много. Итак для внедрения этого функционала надо открыть catalog/controller/product/category.php и найти строку

	$product_total = $this->model_catalog_product->getFoundProducts(); или вместо getFoundProducts будет getTotalProduct();

после этой строки добавить

	$this->data['ttl'] = $product_total;

Таким образом мы из контроллера передаем данные о количестве товара в категории.

Далее открываем шаблон категории catalog/view/theme/default/template/product/category.tpl и находим пагинацию. В каждом шаблоне по разному, но смотрите такой код <?php echo $pagination; ?> после, или перед этой строкой вставляем код кнопки подгрузки: (саму пагинацию можно убрать или уставить, как будет удобно)

<?php if($ttl > count($products)){ ?>
	<input type="hidden" value="<?php echo $this->config->get('config_catalog_limit') + count($products); ?>" name="limit" id="pagin_limit">
	<?php if(($ttl - count($products)) >= $this->config->get('config_catalog_limit')){ ?>
		<div class="category_load">Показать еще <?php echo $this->config->get('config_catalog_limit'); ?></div>
	<?php }else{ ?>
		<div class="category_load">Показать еще <?php echo $ttl-count($products); ?></div>
	<?php } ?>
	<script>
		$(".category_load").on("click", function(){
			product_div = '.products';
			lim = $("#pagin_limit").val();
			$("." + product_div).load('index.php?route=product/category&path=<?php echo $this->request->get['path']; ?>&limit=' + lim + ' ' + product_div + '>*', function(){
				$("#pagin_limit").val(lim);
			});
		});
	</script>
<?php } ?>

Где переменная product_div отвечает за блок в котором находятся товары.

Детально расписывать работу функции подгрузки не буду, но она очень простая. При клике на кнопку показать еще у нас идет обработчик с запуском функции загрузки страницы с лимитом как первая + вторая страница и т.п. Если Количество еще не подгруженых фото больше за лимит на странице - отображается в кнопке лимит на странице. Если меньше - в кнопке показывает реально количество товара, которое еще не подгрузилось. Это очень удобно. И на последней странице подгрузки кнопка не будет отображаться т.к. уже все подгружено на страницу и она не нужна.

Недостаток такого подхода в том что он не понимает сортировки товаров, лимиты и т.п. фильтрации в категории. Но основа есть и при желании расширить функционал это не составит труда.


Комментарии:


Фото комментатора

OOO Nas 14.06.2017

Скрипт отлично работает для магазинов в которых не применяются сортировки, а если они есть то рекомендую в строку index.php?route=product/category&path=<?php echo $this->request->get['path']; ?> добавить sort и order И да, для Opencart 2 мы изменяли скрипт, скорее всего под 1 сделан
Администратор

Ответ for-opencart.com 14.06.2017

Под версию 2 надо $data писать в контроллере + <?php echo $this->request->get['path']; ?> перенести в контроллер

Фото комментатора

Dethtrix 04.09.2017

Что поменять, чтобы на версии 2.3 заработал? Я уже всю голову сломал)
Администратор

Ответ for-opencart.com 04.09.2017

Смотрите в консоле что отдает по клику показать и тогда уже надо разбираться. Конкретно по Opencart 2.3 не помогу т.к. очень загружен.
Фото комментатора

Марк 21.02.2018

Здравствуйте, можете выложить вариант для 2.2 версии?
Администратор

Ответ for-opencart.com 21.02.2018

Это решение может работать на всех версиях
Фото комментатора

Гела 23.03.2018

Интересные штуки разные у вас на сайте. Попытался повторить, но на дефолте версия движка 2.3.0.2.3 (на https) не работает, вроде бы все одинаково, за исключением того, что тут в controller.php такая строка: $product_total = $this->model_catalog_product->getTotalProducts($filter_data); вместо той, что вы описывали.
Администратор

Ответ for-opencart.com 23.03.2018

Ну смотрите по аналогии как сделать для разных версий. Версии конечно отличаются но незначительно. То есть код можно применить как на 1.5 так на 3.х версии. Просто надо просто адаптировать.

Быстрый поиск

Похожее

  • Категория

    Категория это список выбора, (в новых версиях автокомплит) который позволяет присвоить товар к конкретной категории.

  • Категории производителя

    В одном из проектов интернет-магазина керамики заказчик захотел видеть в функционале магазина «Вывод коллекций плитки определенного производителя».

Новое на сайте