Компонент EasyStore - расширение электронной коммерции для Joomla от студии JoomShaper

Ну это точно не компонент
 
а русификатора нет случайно ни у кого ?
 
Российских платёжных систем нет и едва ли появятся.
 
Доброго времени суток. Обновите, пожалуйста.
 
EasyStore v2.0.1 (Pro version)
(22 June 2026)
Updates
  • Dirty state detection now triggers before editing product variants to prevent accidental data loss.
Fixes
  • Fixed a syntax error in root color definitions.
  • Addressed integration issues with the USPS shipping carrier plugin.
  • Attribute creation service now correctly writes entries to the database.
  • Resolved product stock control issue affecting inventory management.
  • Fixed incorrect price display on products when tax is enabled.
 
Тема: [Решение] Фильтр категорий EasyStore выводит все корневые папки (Исправление логики)

Всем привет!

Многие, кто использует EasyStore, после недавних обновлений (когда разработчики перевели базу на Nested Sets в версии 2.0) столкнулись с неприятным багом: модуль фильтра категорий на фронтенде перестал понимать контекст.

Теперь он всегда вываливает абсолютно все корневые категории магазина. Если у вас на сайте несколько непересекающихся разделов (например, "Одежда" и "Запчасти"), фильтр покажет их все в одной куче, что ломает навигацию.

Пока мы ждем официального патча от JoomShaper, предлагаю небольшое и универсальное исправление в коде компонента. Этот код делает фильтр «умным»:

  1. Если пользователь зашел в конкретную категорию — фильтр покажет только её подкатегории.
  2. Если пользователь находится на главной странице магазина (где нет выбранной категории), вы можете задать ID нужной вам папки, чтобы фильтр показал только её внутренности, спрятав остальные корневые разделы сайта.

Как применить фикс:​

Шаг 1: Через FTP или панель хостинга откройте файл:
components/com_easystore/src/Helper/FilterHelper.php

Шаг 2: Найдите метод getCategories() (примерно 50-я строка). Внутри него найдите вот этот кусок кода:

Код:
$rootId = self::getRootCategoryId();
$selectedCategories = $app->input->get('filter_categories', '', 'STRING');
$selectedCategories = $selectedCategories ? explode(',', $selectedCategories) : [];

$query->where($db->quoteName('id') . ' <> ' . (int) $rootId);

$query->order($db->quoteName('lft') . ' ASC');

Шаг 3: Замените этот блок на следующий код:

Код:
$rootId = self::getRootCategoryId();
$selectedCategories = $app->input->get('filter_categories', '', 'STRING');
$selectedCategories = $selectedCategories ? explode(',', $selectedCategories) : [];

// --- ИСПРАВЛЕНИЕ КОНТЕКСТА КАТЕГОРИЙ ---
// Укажите ID вашей главной категории каталога, если хотите скрыть другие корневые папки на главной странице магазина.
// Оставьте 0, если хотите сохранить стандартное поведение на главной странице.
// Пример: $defaultCategoryId = 15;
$defaultCategoryId = 0;

if ($catid > 0 && $catid != $rootId) {
// 1. Мы внутри категории -> показываем только её подкатегории
$query->where($db->quoteName('parent_id') . ' = ' . (int) $catid);
} elseif ($defaultCategoryId > 0) {
// 2. Мы на главной -> показываем подкатегории выбранной категории по умолчанию
$query->where($db->quoteName('parent_id') . ' = ' . (int) $defaultCategoryId);
} else {
// 3. Стандартное поведение EasyStore (выводит всё)
$query->where($db->quoteName('id') . ' <> ' . (int) $rootId);
}
// --- КОНЕЦ ИСПРАВЛЕНИЯ ---

$query->order($db->quoteName('lft') . ' ASC');

Шаг 4: Сохраните файл и обязательно очистите кэш Joomla.

Пара советов:

  • В коде выше обратите внимание на переменную $defaultCategoryId = 0;. Вместо 0 вы можете вписать ID нужной вам категории (посмотреть можно в админке в списке категорий).
  • Если после применения кода вы хотите получить просто ровный плоский список чекбоксов (как было в старых версиях), зайдите в настройки аддона Filter в SP Page Builder и отключите опцию Show Hierarchy.
⚠️ Важно: Поскольку это хак ядра (core hack), при следующем обновлении EasyStore этот файл перезапишется на стандартный. Сохраните этот код себе в блокнот, чтобы можно было быстро вернуть его на место, если в обновлении разработчики так и не починят эту проблему.

Надеюсь, это сэкономит кому-то пару часов нервов!
 
Назад
Сверху