我正在制作一个可定制的产品在prestashop销售,它是一个辣椒酱,你可以根据自己的口味完全定制...我做得很好,prestashop中的属性选项很好设置下拉选择字段和outers东西,但是,我不能简单地添加一个文本框!我试图找到一个解决方案,但它很复杂...
http://pimentaemcasa.com.br/home/8-pimenta-personalizada.html
你们可以在中间看到自定义选项,最后一个是酱的名称,它是一个文本框但是在用户点击“comprar”(添加到购物车)后它无处可去,我需要发布它与外部属性一起,现在它只是一个文本字段,无处发送他的价值......任何人都可以帮我附上订单上的名字?
(产品中的prestashop自定义选项让你放置一个文本框,但是它还需要你在点击“添加到购物车”之前在名称中点击“保存”,可怕的,嘿prestashop团队,算一下水龙头!; p )
thaaanks!
答案 0 :(得分:1)
我在此示例中使用文本字段自定义数据,您应该为您的产品创建自定义输入数据(在此示例中称为昵称)。 您可以添加文本框并将其值发送到blockcart模块中的ajax-cart.js,
in
add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist)
您可以添加输入,例如
var nickname = $('input[name=nickname]').val();
并在ajax调用中发送值
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: baseUri + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType : "json",
/*************** added by TAREK ******************************/
data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity !=
null) ? quantity : '1') + '&id_product=' + idProduct
+'&nickname='+nickname+ '&token=' + static_token + (
(parseInt(idCombination) && idCombination != null) ? '&ipa=' +
parseInt(idCombination): ''),
/*************** added by TAREK ******************************/
在cartController.php(override)中,在processChangeProductInCart函数中,if (!$this->errors && $mode == 'add')
之后你应该在数据库中添加自定义数据值的代码
$authorized_text_fields = array('nickname');
foreach ($_POST as $field_name => $value)
if (in_array($field_name, $authorized_text_fields) && $value != '')
{
if (!Validate::isMessage($value))
$this->errors[] = Tools::displayError('Invalid message');
else {
$this->context->cart->deleteCustomizationToProduct((int)$this->id_product, 'nickname');
$this->context->cart->addTextFieldToProduct($this->id_product, 'nickname', Product::CUSTOMIZE_TEXTFIELD,Tools::getValue('nickname'));
}
}
else if (in_array($field_name, $authorized_text_fields) && $value == '')
$this->context->cart->deleteCustomizationToProduct((int)$this->id_product, 'nickname');
希望这有帮助, 亲切。