
什么是本文讲的高级定制?
如上图,用户可以通过下拉菜单选择颜色和尺码来购买商品。但是用户发现自己的身材和商品提供的尺码表不一样(比如用户选了M码的尺寸,但是一对应尺码表发现,肩宽合适,但是腰围不合适),需要按照自己的尺寸来定制,就要手动输入,往往我们就叫这个定制功能为高级定制。
那么如何来实现高级定制呢?下面我来说下。
商品A信息:
SKU编号:AAAA
颜色(下拉菜单dropdown):红 黄 蓝
尺码(下拉菜单dropdown):X,L,M
商品B信息:
SKU编号:AAAA-CUS
颜色(下拉菜单dropdown):红 黄 蓝
尺码1(输入框input):
尺码2(输入框input):
尺码3(输入框input):
尺码4(输入框input):
…………..
尺码N(输入框input):
通过对比上面的数据,可以发现我在SKU上做了文章,B商品的SKU是A商品的SKU后面增加“-CUS”。B商品的尺码是用户可以自己输入的。
实现原理:
1.如果A商品需要高级定制功能,那么必须有与之对应的B商品存在,两者在SKU上必须存在上面所说的规律。B商品建议设置为前台不可见,搜索不可见。
2.在A商品页面的时候,用程序获取A商品的SKU。比如获取A商品的sku是”123″,那么就通过程序来判断sku“123-CUS”的商品是否存在,如果存在就说明A商品可以进行高级定制。
3.通过SKU获取B商品的数据,生成输入框和加入购物车按钮构建<form>,可以去看下B商品的form是如何写的。
4.当用户下单后其实购买的是B商品,所以在购物车定地方点击商品的链接会返回B商品的页面,请保持B商品信息的完整。
5.如果定制商品要用户付额外费用,无论你B商品是从后台添加的还是靠CSV批量添加的,都要做相应的处理,你可以直接增加B商品的价格,也可以在自定义选项(custom options)上做文章。
在自定义选项上你可以设置增加10元,也可以设置减少10元,你做一些促销活动,互动活动就会非常的方便,只需要程序上处理下即可实现价格增减。所以建议将价格设置到自定义选项中。
代码片段:在view.phtml文件中如何通过A商品的sku获取B到商品
$s = $_product->getSku().'-CUS'; $p_ID = Mage::getModel('catalog/product')->getIdBySku($s); $product = Mage::getModel("catalog/product")->load($p_ID);
如何输出B商品的form
<?php foreach ($product->getOptions() as $option) { $values = $option->getValues(); if($option->getTitle() != 'free') { echo '<dt><label>'.$option->getTitle().'</label></dt>'; } if($option->getType() == 'drop_down') { echo '<dd><select name="options['.$option->getOptionId().']">'; $values = $option->getValues(); foreach ($values as $v) { $option_value = $v->getData(); echo '<option value ="'.$option_value[option_type_id].'">'.$option_value[default_title].'</option>'; } echo '</select></dd>'; } if($option->getType() == 'field' && $option->getTitle() != 'free') { echo '<dd><input class="input-text required-entry validate-zero-or-greater" type="text" name="options['.$option->getOptionId().']" /></dd>'; } if($option->getType() == 'field' && $option->getTitle() == 'free') { echo '<dd class="no-display"><input value="" class="input-text validate-alphanum" type="text" name="options['.$option->getOptionId().']" /></dd>'; } } ?>
上面是一个例子,你不必非要这样来写。这段代码中,我将有的输入框给隐藏掉了,是为了做价格上的调整,比如用户需要高级定制,我就会在原价上增加一定的价格。就可以用这个隐藏的输入框来实现。 – – ! 那些用firebug的用户来买东西就管不了了。
商品如果是批量上传的,实现本文的方法,是非常方便的。
补充:
当然还有别的方法可以实现这个高级定制,比如不需要B商品,直接给A商品增加一个input的custom options,然后用js的方式将各个尺寸存到这个input中即可。但是那样做的话会对模板修改很大。可以说各有利弊。如果大家方便批量上传B商品,使用本文的方法还是不错的。
转载标明出处:www.hellokeykey.com
沙发啊,呵呵
学习……..
楼主没看懂啊?不知道具体怎么操作呢?
不熟悉magento的批量导入,不好搞清楚如何实现这个
请教楼主怎么设置自定义选项,比如:胸围:后面留框,顾客自己填写,而且这个属性石可以再添加产品时勾选的,我看了custom options里和attributes里都不能设置这样的属性,郁闷了
无法很好的实现此功能,本文的方法可以,但不一定适合你
不知道为什么,我设置可配置产品总是显示out of stock, 进入产品也没下拉菜单,后台设置完后有一件configurable product和多件simple product,configurable product显示库存0件,simple product都是有货的。完全按照视频做的,为什么会显示出不同的效果,不知道钥匙老师有没有遇到过这个情况?
找到原因了,看的老版的视频,有些设置不一样,新版的就没问题了!太感谢钥匙老师了,现在基本的设置添加都没问题了