当前位置: 首页 > 知识库问答 >
问题:

Prestashop产品定制-保存到购物车

巢承安
2023-03-14

Prestashop 1.6

我创建了一个模块,将表单添加到产品页面。我使用prestashop模块生成器来创建一个基本的裸模块。除了通过钩子向产品页面添加表单之外,它什么也不做。

我使用的是默认的引导主题。

表单是通过. tpl文件生成的,该文件基于产品所在的类别(即,如果产品在类别A中,则显示表单A)。表单看起来像这样:

<form id="engraving_selection">
    <h3>Engraving Options</h3>
    <input type="radio" name="engraving" value="Engrave-Different" id="engrave_different" checked="checked">Unique engraving for each item<br />
    <input type="radio" name="engraving" value="Engrave-Same" id="engrave_same">The engraving would the same on each item<br />
    <input type="radio" name="engraving" value="No-Engraving" id="no_engraving">I would not like engraving<br />
</form>
<form id="engraving_options">
    <h4>Engraving Text</h4>
    <div id="items">
        <div class="item" data-position="1">
            <h4 id="engraving-item">Item 1</h4>
            <label>Engraving Line 1: </label>
            <input type="text" class="engraving-input" name="line1-trophy" id="item1">
            <br />
            <label>Engraving Line 2: </label>
            <input type="text" class="engraving-input" name="line2-trophy" id="item1">
            <br />
            <label>Engraving Line 3: </label>
            <input type="text" class="engraving-input" name="line3-trophy" id="item1">
            <br />
        </div>
    </div>
</form>

表单是无线电输入的选择,后面是3个文本输入。如果用户更改了数量,则会相应地通过javascript添加另外3个输入(因此,如果用户将数量更改为2,则会出现3个输入中的2组,以便在每个产品上进行定制)。

我想要一些关于保存这些输入和用户点击添加到购物车时输入的信息的指导,以便以后(在用户退房之前)可以检索/编辑这些输入和信息。

一些研究让我ajax-cart.js,特别是这个功能:

add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist)

传递数据以便保存/检索数据的最佳方法是什么?

最终,我希望它被包括在订单中(显然),并与该订单一起保存到数据库中以供将来使用。

我知道pluginattributewizardpro是存在的,但我想扩展我的知识,自己做点什么。

如果有其他更干净/更容易的方法,我也愿意接受这些建议。

共有1个答案

苗征
2023-03-14

您可以创建一个全新的解决方案,但这需要很长时间和许多行代码。

最好的选择是使用Prestashop内置的产品定制选项。

  1. 转到Backoffice并选择单个产品编辑

添加一些javascript到您的产品页面隐藏/显示这些文本字段输入(因为它们在默认情况下都是可见的)。

您可以将javascript代码添加到:

  • themes/[您的主题]/产品。js文件(首选)-它将仅在产品页面上加载,
  • themes/[您的主题]/js/autoload/[任何文件名]。js-它将加载到所有页面上

请确保添加无bug代码:)

完成!

 类似资料: