ecshop在商品录入的时候,我们可以录入不同的购买数量。享受不同的购买价格的功能。也就是我们讲述的ECSHOP商品价格区间原理分析。在ecshop录入商品的时候,我们可以选择性的录入一些区间价格。
首先我们看ecshop数据库商品区间价格表ecs_volume_price。里面有商品的ID。volume_number这个表示购买的数量,volume_price表示商品区间所在的价格。在录入或者是编辑ecshop商品的时候。我们可以看到ecshop模板中存在以下代码。
<tr> <td class="label"><a href="javascript:showNotice('volumePrice');" title="{$lang.form_notice}"><img src="images/notice.gif" width="16" height="16" border="0" alt="{$lang.form_notice}"></a>{$lang.lab_volume_price}</td> <td> <table width="100%" id="tbody-volume" align="center"> {foreach from=$volume_price_list item=volume_price name="volume_price_tab"} <tr> <td> {if $smarty.foreach.volume_price_tab.iteration eq 1} <a href="javascript:;" onclick="addVolumePrice(this)">[+]</a> {else} <a href="javascript:;" onclick="removeVolumePrice(this)">[-]</a> {/if} {$lang.volume_number} <input type="text" name="volume_number[]" size="8" value="{$volume_price.number}"/> {$lang.volume_price} <input type="text" name="volume_price[]" size="8" value="{$volume_price.price}"/> </td> </tr> {/foreach} </table> <span class="notice-span" {if $help_open}style="display:block" {else} style="display:none" {/if} id="volumePrice">{$lang.notice_volume_price}</span> </td> </tr>
我们分析ecshop商品录入和编辑程序。在程序里面,如果存在商品的价格区间,那么将从ecshop数据库中将该区间价格读出来。
$volume_price_list = ''; if(isset($_REQUEST['goods_id'])) { $volume_price_list = get_volume_price_list($_REQUEST['goods_id']); } if (empty($volume_price_list)) { $volume_price_list = array('0'=>array('number'=>'','price'=>'')); } $smarty->assign('volume_price_list', $volume_price_list);
当我们录入区间价格的时候,获取购买数量和对应优惠价格的数组。
if (isset($_POST['volume_number']) && isset($_POST['volume_price'])) { $temp_num = array_count_values($_POST['volume_number']); foreach($temp_num as $v) { if ($v > 1) { sys_msg($_LANG['volume_number_continuous'], 1, array(), false); break; } } handle_volume_price($goods_id, $_POST['volume_number'], $_POST['volume_price']); }
将他提交到数据库中去。
当我们在前台购买的时候,将会在get_final_price($goods_id, $num, true, $spec);有段这个函数,通过购买数量,来统计交易金额。这个函数中的以下代码
//取得商品优惠价格列表 $price_list = get_volume_price_list($goods_id, '1');
if (!empty($price_list)) { foreach ($price_list as $value) { if ($goods_num >= $value['number']) { $volume_price = $value['price']; } } }
就是来计算该商品购买多少数量,对应的优惠价格。
以上就是ecshop促销功能的一大原理。
|