Jump to content

  • You cannot start a new topic
  • You cannot reply to this topic

Как скрыть пустые категории? Rate Topic   - - - - -

 
  • vkapas
  • Advanced Member
  • Members
  • Join Date: 13-Aug 12
  • 83 posts

Posted 23 April 2013 - 04:23 PM #1

Можно ли в CS-Cart как-то автоматически скрывать категории, в которых нет товаров?

 
  • CartExpert
  • Advanced Member
  • Trial users
  • Join Date: 11-Feb 13
  • 80 posts

Posted 26 April 2013 - 06:59 AM #2

Можно ли в CS-Cart как-то автоматически скрывать категории, в которых нет товаров?


Добрый день,

Я могу сделать для Вас модуль, который будет скрывать категории без продуктов. Разработка будет стоить порядка 1000р, если мое предлежание Вас заинтересовало, пишите на мыло radik2806@yandex.ru

 
  • nukeleo
  • Junior Member
  • Members
  • Join Date: 12-Feb 08
  • 32 posts

Posted 08 June 2013 - 09:20 AM #3

Можно ли в CS-Cart как-то автоматически скрывать категории, в которых нет товаров?


Сделать прямой запрос к базе через phpMyAdmin
Запрос на установку СКРЫТОГО статуса для всех категорий без товаров

UPDATE `cscart_categories`
SET `status` = 'H'
WHERE `status` = 'A' AND `product_count` = 0

 
  • vkapas
  • Advanced Member
  • Members
  • Join Date: 13-Aug 12
  • 83 posts

Posted 09 June 2013 - 03:40 PM #4

Большое спасибо за подсказку, примерно такое решение я и искал.

 
  • vkapas
  • Advanced Member
  • Members
  • Join Date: 13-Aug 12
  • 83 posts

Posted 10 June 2013 - 07:06 AM #5

Запрос на установку СКРЫТОГО статуса для всех категорий без товаров

UPDATE `cscart_categories`
SET `status` = 'H'
WHERE `status` = 'A' AND `product_count` = 0

Эх, к сожалению, не подошло решение, так как у нас есть «родительские» категории (например Телефоны -> Мобильные телефоны), в которых товаров не содержится, и этот запрос скрывает все такие категории.

В ТП CS-Cart пояснили, что так и должно быть, — родительские категории считаются пустыми, даже если в дочерних категориях товары есть.

 
  • Alex_VP
  • Senior Member
  • Members
  • Join Date: 04-Jun 10
  • 1452 posts

Posted 10 June 2013 - 07:23 AM #6

Большое спасибо за подсказку, примерно такое решение я и искал.

При появлении товаров в категории - статус обратно на активный не поменяется, поэтому добавьте запрос на постановку активного статуса всем категориям, где товаров больше 0, всё это запихните в php скрипт, который будет запускаться через cron по расписанию.
Если у вас не отображаются товары, которых нет в наличии - то такой способ всё равно будет показывать пустые категории, в которых есть закончившиеся товары.
Тогда лучше сделать запрос, где в условии - подзапрос на проверку количества (count) товаров , принадлежащих каждой категории, то есть в UPDATE будут участвовать три таблицы cscart_categories, cscart_products и cscart_products_categories

PS с учетом вашего последнего замечания - надо добавить проверку на наличие дочерних категорий

 
  • miadiva
  • Senior Member
  • Members
  • Join Date: 17-Sep 13
  • 362 posts

Posted 06 January 2014 - 05:35 AM #7

Сделать прямой запрос к базе через phpMyAdmin
Запрос на установку СКРЫТОГО статуса для всех категорий без товаров

UPDATE `cscart_categories`
SET `status` = 'H'
WHERE `status` = 'A' AND `product_count` = 0

А если нужно скрыть категории, где есть товары, но их статусы скрытый и выключенный (нет включенного товара):

UPDATE `cscart_categories`
SET `status` = 'H'
WHERE `status` = 'A' AND ........?

Извините за невежество :-(
можно ли написать как-то в этом роде:
WHERE `status` = 'A' AND `статус товара` не равно A?

 
  • Alex_VP
  • Senior Member
  • Members
  • Join Date: 04-Jun 10
  • 1452 posts

Posted 09 January 2014 - 06:25 AM #8

Ещё раз повторюсь, что здесь не обойтись без скрипта, обращающегося к базе данных, так как логика такова (в идеале):
1. Рекурсивно обходим дерево категорий
2. При достижении конечной точки ветки дерева - если нет активных товаров - ставим категории статус Скрыто.
3. Если у данного узла пройдены все дочерние узлы, нет активных товаров, и все дочерние узлы имеют статус Скрыто - также ставим статус Скрыто.