Здравствуйте! Я Ваш личный надежный программист.
1С Предприятие 8.2-8.3, 1С-Битрикс: Управление сайтом, Битрикс24
В модуле работы с корзиной есть ошибка: Не переводит летающую корзину с легким шаблоном
В модуле перевода есть файл класса обработки корзины basketclass.phpВ нем перевод уходит в массив с наименованием $result["BASKET_ITEM_RENDER_DATA"], данный массив используется исключительно в обычном компоненте корзины в котором есть вспомогательный файл mutator.php в котором и происходит вся магия.НО! Есть проблема в том, что при небольших компонентах работы корзины, не такие тяжеловесные как стандартные, данного файла просто нет, например в шаблоне компонента работы с плавающей...
В модуле перевода есть файл класса обработки корзины basketclass.php В нем перевод уходит в массив с наименованием $result["BASKET_ITEM_RENDER_DATA"], данный массив используется исключительно в обычном компоненте корзины в котором есть вспомогательный файл mutator.php в котором и происходит вся магия.
НО! Есть проблема в том, что при небольших компонентах работы корзины, не такие тяжеловесные как стандартные, данного файла просто нет, например в шаблоне компонента работы с плавающей корзиной https://disk.yandex.ru/i/h12_AYfigsJB2A т.е. в ней урезанные данные, которые используют обычный массив $arResult без изменений, а в него модуль как раз и не пишет данные.
Чтобы это обойти мне пришлось дописать костыли. В стандартном коде есть строчка: if(!is_array($result["BASKET_ITEM_RENDER_DATA"])) return;
Т.е. если этого массива нет, то ни чего не переводить, я в это место и вставил кастомные строки чтобы данные всё таки переводились и уходили в шаблон компонента летающей корзины. Чтобы данные появились в шаблоне нужно переводить массив $result["GRID"]["ROWS"], следовательно я пропустил его через модуль перевода:
Получилась следующая логика - если массива $result["BASKET_ITEM_RENDER_DATA"] нет, то переводим $result["GRID"]["ROWS"],а если он есть то переводим по той логике как заложено было изначально в модуле перевода. После чего летающая корзина перевелась.
Надеюсь, что вы доработаете модуль так, чтобы не нужно было изобретать костыли, чтобы не слетало после обновления модуля.
Компонент bitrix > sale.basket.basket Шаблон компонента обычный v1 а летающей корзины top_hover по структуре шаблона можно увидеть разницу в обработке входящих данных от стандартного компонента.
Шаблон стороннего решения, и он видимо использует выдачу данных по другоиму. В типовом списке шаблонов компонента sale.basket.basket я вижу только два:
.default
bootstrap_v4
Это шаблоны Битрикса. И оба они работают корректно с нашим решением.
Ни чего в этом удивительного, это изначально было понятно. Речь идёт о том, что у вас в классе стоит ошибка, точнее существенное урезание функционала и гибкости. Я привёл даже пример решения, осталось его только интегрировать. Очень надеюсь на внимание к просьбам сделать более универсальное решение, чтобы не использовать ручные костыли после обновления модуля.
Как я понимаю последний комментарий относится не к данной проблеме. Она по прежнему сохраняется и после каждого обновления приходится дописывать костыль в класс решения, чтобы работало корректно. Детали как сделано уже описал. В вашем классе выводится return что отключает перевод, а костыль дописывает чтобы он всё равно был, чтобы работало корректно.