Где возникла проблема: CS-Cart Ultimate 4.12.1
Суть проблемы: При выборе любого фильтра недоступные варианты теперь не перемещаются в конец списка. Стало очень неудобно пользоваться фильтрами.
Как воспроизвести проблему: Просто применить фильтр и посмотреть на список вариантов. На dev.demo.cs-cart.ru воспроизводится:
Временное решение . В app/functions/fn.filters.php
найти код (1379 строка):
foreach ($filters[$filter_id]['variants'] as $variant_id => $v) {
if (empty($available_variants[$filter_id]['variants'][$variant_id])) {
$filters[$filter_id]['variants'][$variant_id]['disabled'] = true;
}
}
и заменить его на:
foreach ($filters[$filter_id]['variants'] as $variant_id => $v) {
if (empty($available_variants[$filter_id]['variants'][$variant_id])) {
unset($filters[$filter_id]['variants'][$variant_id]);
$v['disabled'] = true;
$filters[$filter_id]['variants'][$variant_id] = $v;
}
}
UPD: дополнительно надо заменить код со строки 1371:
if (!empty($filters[$filter_id]['variants'][$variant_id])) {
$filters[$filter_id]['variants'][$variant_id]['selected'] = true;
$filters[$filter_id]['selected_variants'][$variant_id] = $filters[$filter_id]['variants'][$variant_id];
}
на:
if (!empty($filters[$filter_id]['variants'][$variant_id])) {
$filters[$filter_id]['selected_variants'][$variant_id] = $filters[$filter_id]['variants'][$variant_id];
unset($filters[$filter_id]['variants'][$variant_id]);
}
5 лайков
Думаю, если это и делать - то опционально, ни в коем случае не принудительно. Если вариантов очень много - возможно это правильное решение. Если вариантов не много - приятно когда все остается на своих местах, не прыгая туда-обратно.
1 лайк
Фикс бага – до 45 дней.
Добавление опциональности – до бесконечности.
1 лайк
saden
04.Февраль.2021 08:22:16
4
Кто-нибудь знает исправили проблему в 4.12.2 ?
В списке изменений не нашёл ничего.
Пока багом не признано, я так понимаю
Присоединяюсь. Тоже начали жаловаться и клиенты и менеджеры.
Помогите плиз.
на 4.12.2 на 1379 совсем другой код. Как его поменять?
// If we selected any variants in filter, disabled unavailable variants
foreach (array_keys($filters[$filter_id]['variants']) as $variant_id) {
if (
!empty($available_variants)
&& isset($available_variants[$filter_id])
&& (
empty($available_variants)
|| empty($available_variants[$filter_id])
|| !empty($available_variants[$filter_id]['variants'][$variant_id])
)
) {
continue;
}
$filters[$filter_id]['variants'][$variant_id]['disabled'] = true;
}
Можно заменить
$filters[$filter_id]['variants'][$variant_id]['disabled'] = true;
на
if (!empty($available_variants) && !empty($available_variants[$filter_id])) {
foreach ($filters[$filter_id]['variants'] as $variant_id => $v) {
if (empty($available_variants[$filter_id]['variants'][$variant_id])) {
unset($filters[$filter_id]['variants'][$variant_id]);
$v['disabled'] = true;
$filters[$filter_id]['variants'][$variant_id] = $v;
}
}
}
И вот эту часть делать не нужно, вызывает конфликт с tpl-шаблоном фильтров:
2 лайка
Работает! Спасибо!
Активные / Доступные варианты фильтра переместить вверх - текст, чтоб в след раз найти поиском)
Asya
04.Сентябрь.2024 13:39:28
10
Здравствуйте.
Спасибо за ваши сообщения.
Передала ваши пожелания разработчикам в качестве запроса на улучшение функциональности.