Prestashop Product customizer

У меня есть приложение, которое является T-Shirt customizer, который отлично работает на своем. Но мне нужно интегрировать его в prestashop. Поэтому, после того как пользователь использует приложение для настройки футболки, он должен нажать «Добавить в корзину», и продукт будет добавлен в корзину с пользовательской ценой и описанием.

Мне нужно, чтобы этот вывод вводился в корзину PrestaShop в качестве настраиваемого продукта со всей пользовательской информацией, а также сгенерированный пользовательский образ продукта для отображения рядом с деталями в корзине.

Итак, у меня есть настройка, я уже сделал собственный модуль и страницу для Prestashop, но я не знаю, как его интегрировать с тележкой. Мои знания preashop ограничены.

Как я могу это сделать?

Когда вы используете этот код в CartController.php

 $this->context->cart->addTextFieldToProduct($this->id_product, $r["id_customization_field"], Product::CUSTOMIZE_TEXTFIELD, Tools::getValue('product_description')); 

то вы сохраняете свое пользовательское описание только в поле настройки. Но как вы меняете цену за эту настройку?

Конечно, вы должны переопределить метод getPriceStatic в файле product.php чтобы пересчитать пользовательскую цену. Но есть и еще одна проблема: что, если клиент добавит тот же товар в корзину, но с другой настройкой, а также по другой цене?

Разный текст настройки обрабатывается вашим используемым методом и поэтому добавляется правильно в корзину, но разный расчет цены просто перезаписывает первую пользовательскую цену, потому что обе настройки связаны с одним и тем же продуктом.

Я сделал что-то подобное. Вот как я справился с этим.

Мой модуль работает сам по себе. Я сохранил настройку в базе данных с помощью объектной модели из модуля настройки. Каждая настройка имеет идентификатор.

Prestashop предлагает индивидуальные настройки для каждой продукции. Я скрываю его от клиента на странице prodct, но я использую его для хранения идентификатора настройки. Таким образом, вы можете увидеть в корзине идентификатор настройки для каждого настроенного продукта.

Я использовал метод _addCustomization в объекте Cart для хранения идентификатора настройки. Вот небольшой пример:

 $context = Context::getContext(); $result = $context->cart->_addCustomization($id_product, $id_product_attribute, 1, 1, $id_customization, 1); 

Надеюсь, я достаточно ясна.

Это поможет вам?