在Magento上实现高级定制

Magento实现高级定制
Magento实现高级定制

 

什么是本文讲的高级定制?

如上图,用户可以通过下拉菜单选择颜色和尺码来购买商品。但是用户发现自己的身材和商品提供的尺码表不一样(比如用户选了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上实现高级定制》有7个想法

  1. 请教楼主怎么设置自定义选项,比如:胸围:后面留框,顾客自己填写,而且这个属性石可以再添加产品时勾选的,我看了custom options里和attributes里都不能设置这样的属性,郁闷了

  2. 不知道为什么,我设置可配置产品总是显示out of stock, 进入产品也没下拉菜单,后台设置完后有一件configurable product和多件simple product,configurable product显示库存0件,simple product都是有货的。完全按照视频做的,为什么会显示出不同的效果,不知道钥匙老师有没有遇到过这个情况?

    1. 找到原因了,看的老版的视频,有些设置不一样,新版的就没问题了!太感谢钥匙老师了,现在基本的设置添加都没问题了

评论已关闭。