
Не правильно отображается подарок в корзине в prestashop 1.7.8 и не правильно отображается в оформлении заказа
Если вы являетесь новичком в prestashop то возможно вы не знаете что в магазине можно создавать подарки по определенным правилам для пользователя или для всех пользователей, а также можно устанавливать правило по категориям в которых находятся товары, настраивать для какого товара будет применяться подарок - это все настраивается в разделе скидки, именно там где вы создаете купоны.
Что бы увидеть подарок для товара, достаточно просто товар добавить в корзину и перейти в корзину, и там вы увидите подарок.
Но мне пришлось встретить такую не понятную проблему с выводом подарка на странице корзины. То что подарок выглядит как товар, но не как подарок.
Ниже я описал проблему как ее можно решить.
На сайте настраивается подарок для пользователя по определенным правилам в разделе "Скидки". И когда вы создаете скидку как купон, только у него не указан код, то этот купон является как подарок на рисунке 1.
(Рисунок 1. Указываем пустой код в скидке)
Подарок на сайте выводится в корзине на рисунке 2
(Рисунок 2. Как выглядит подарок в корзине в 1.7.8 версии prestashop)
Была найдена ошибка с выводом этого подарка в корзине в prestashop 1.7.8 версии. Проблема заключается в том что подарок выводится как товар в списке, а не как подарок на рисунке 3
(Рисунок 3. Что не должно выводиться у подарка в корзине)
Что бы исправить эту проблему нужно в коде добавить небольшой кусок кода, в файле \classes\Cart.php после 858 строчки кода, в функции getProducts:
На рисунке 4 наглядный пример в редакторе
(Рисунок 4. Как я редактировал в редакторе)
Тоесть в файле \classes\Cart.php это будет выглядить следующим образом:
После добавления куска кода в файл у вас на странице продукта уже должен будет отобразиться товар как подарок на рисунке 5
(Рисунок 5. Как должен выглядить подарок в корзине)
У нас получилось вывести правильно подарок в корзине. Далее в коде из массива приходил ключ is_gift которое хранило не правильное значение как false и мы исправили эту проблему.