Ошибка в хлебных крошках

В products.php 121 строка, есть проверка
empty($product[‘category_ids’][Tygh::$app[‘session’][‘current_category_id’]]))
которая срабатывает ложно, так как в product[‘category_ids’] приходят категории с ключами по порядку (0,1,2,3), а проверка идет как раз по этим ключам. Чтобы срабатывало верно либо ключи должны приходить равные id категорий либо должна быть такая проверка
!in_array($product[‘category_ids’],Tygh::$app[‘session’][‘current_category_id’])).

Все это приводит к тому, что у товара в хлебных крошках высвечивается неправильная родительская категория, если на товар прошли не из его категории (и у категории id меньше чем кол-во категорий у товара)

2 лайка

Здравствуйте, @Turchick

Спасибо за ваше сообщение.

Уточните, пожалуйста, шаги для воспроизведения проблемы.

Создать несколько категорий (например 10).
Создать товара и присвоить ему 5 последних категорий (с id больше 5)
Отредактировать страницу какой либо категории у которых id меньше 5, и добавить туда товар как угодно хоть прямой ссылкой.
Пройти по товару, в хлебных крошках будет категория с которой мы прошли, хотя этой категории нет у товара.

ну так это не ошибка, а так задумано. Хлебные крошки на основе структуры сайта

Исходя из кода видно, что проверка рандомная.
Получается в проверке проверяется есть ли в массиве ключей category_ids ид текущей категории из сессии. Хотя ключи этого массива просто идут по порядку (0,1,2,3,4). То есть проверка сработает если в данный момент в сессии current_category_id = 3, но если у товара будет меньше категорий то не сработает.

И также в той теме вы приводите примеры с категориями, которые есть у товара. А тут проверка сработает и с переходом из категории, которой у товара нет. И в крошках будет категория, который у товара нет.

Х.з., но мне думается, что даже если проверка будет правильной, работать как надо оно не будет.

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

Здравствуйте, @Turchick

Спасибо за пояснения.

Проблему воспроизвела. Однако, как вы и указали, она воспроизводится для категорий с маленьким ID. То есть такая проблема может возникнуть в установках, которые устанавливали без демо данных. Если cs-cart устанавливали изначально с демо данными, ID категорий начинаются где-то с 165. Поэтому в таких установках проблема не актуальна.

Информацию передала разработчикам.