ECSHOP商品价格区间原理分析

2011-05-10 21:15 来源:www.chinab4c.com 作者:admin

    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促销功能的一大原理。

   来源:http://www.chinab4c.com