MIGO Web-Development - разработка и cоздание сайтов в Киеве, Украине

Создание сайтов, поисковое продвижение в Google. Сопровождение, тех.поддержка


звонить: +38 (093) 636 78 08
писать: web@migo.com.ua


Сниппет для вывода количества товаров в категории для minishop2 в MODX

Сниппет для вывода количества товаров в категории для minishop2 в MODX

Создаем сниппет для вывода количества товаров в категории minishop2. Сниппет получает сумму всех товаров в категории, с учетом мультикатегорий MS2. Можно определить нужную категорию, указав ее id в параметре $parent.

Нашел замечательное решение для требуемого функционала.

Код сниппета getCountProducts для вывода кличества товаров:

<?php
if (empty($parent)) {$parent = $modx->resource->id;}
$pids = array_merge(array($parent), $modx->getChildIds($parent));
$ids = array();
$q = $modx->newQuery('msProduct');
$q->where(array('class_key' => 'msProduct','parent:IN' => $pids,'published' => 1,'deleted' => 0));
$q->select('`msProduct`.`id`');
if ($q->prepare() && $q->stmt->execute()) {
    $ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
}
$q = $modx->newQuery('msProduct');
$q->leftJoin('msCategoryMember', 'Member', '`Member`.`product_id` = `msProduct`.`id`');
$q->where(array('class_key' => 'msProduct','Member.category_id:IN' => $pids,'published' => 1,'deleted' => 0));
$q->select('`msProduct`.`id`');
if ($q->prepare() && $q->stmt->execute()) {
  $ids2 = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
  if (!empty($ids2)) {
    $ids = array_unique(array_merge($ids, $ids2));
  }
}
return count($ids);

Заставить сниппет работать просто. В том месте, где требуется показать количество товаров просто пропишите вызов сниппета, вот так: [[getCountProducts]]. И все.

Удачи!

проспект И.Мазепы 5 07300 Украина, Киевская обл., г. Вышгород, +38 (093) 636 78 08
Рассказать друзьям:

comments powered by Disqus