У меня есть приложение, которое является 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);
Надеюсь, я достаточно ясна.
Это поможет вам?