您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程
ecshop团购点击价格变动的实现方法
凡蕾2025-01-17Ecshop商城教程已有人查阅
导读前提:价格阶梯只能设置一级需要用到: jquery,transport.js(transport_jquery.js),Ajax.callhtml页面js代码,还需要插入jquery,transport.js(支持ajax插件的)文件
前提:价格阶梯只能设置一级
需要用到: jquery,transport.js(transport_jquery.js),Ajax.call
html页面
js代码,还需要插入jquery,transport.js(支持ajax插件的)文件
,另一个是扩展属性(价格)function group_attr(){}
html
1.要想点击价格有变动,ajax.all 必须得可以调取到值。
2.给一个团购的id,或者到参加团购商品的团购价格、或者属性
3.有了团购价格,再来获取点击扩展属性,获取扩展属性价格
4.团购价格、扩展属性价格都齐全了,利用ecshop本身的js功能function changePriceResponse 给某个id="ECS_GOODS_AMOUNT">{$group_buy.formated_cur_price}</div>值
需要用到: jquery,transport.js(transport_jquery.js),Ajax.call
html页面
js代码,还需要插入jquery,transport.js(支持ajax插件的)文件
/**
* 点选可选属性或改变数量时修改商品价格的函数
*/
var goodsId = {$group_buy.goods_id}; // 参加团购产品的id,需要获取团购设置的初始价格
var act_id = {$group_buy.act_id}; // 扩展类别属性
function changePrice()
{
var attr = getSelectedAttributes(document.forms['ECS_FORMBUY']);
var qty = document.forms['ECS_FORMBUY'].elements['number'].value;
//alert('act=price&id=' + goodsId +'&act_id='+ act_id + '&attr=' + attr + '&number=');
Ajax.call('group_buy.php', 'act=price&id=' + goodsId +'&act_id='+ act_id + '&attr=' + attr + '&number=' + qty, changePriceResponse, 'GET', 'JSON');
}
/**
* 接收返回的信息
*/
function changePriceResponse(res)
{
if (res.err_msg.length > 0)
{
alert(res.err_msg);
}
else
{
document.forms['ECS_FORMBUY'].elements['number'].value = res.qty;
if (document.getElementById('ECS_GOODS_AMOUNT'))
document.getElementById('ECS_GOODS_AMOUNT').innerHTML = res.result;
//alert(res.result);
}
}
/*新增 商品点击效果*/
function changeAtt(t,src,key) {
//alert(key);
document.getElementById('spec_value_'+src).checked='checked';
div = document.getElementById("EXP_"+key);
elems = div.getElementsByTagName("dl")[0].getElementsByTagName("a");
for(i=0;i<elems.length;i++){
elems.className='';
}
t.className = "on";
//elems[t].getElementsByTagName("span")[0].style.display="block";
changePrice();
}
php文件 group_buy.php?act=price,另一个是扩展属性(价格)function group_attr(){}
/*------------------------------------------------------ */
//-- 改变属性、数量时重新计算商品价格
/*------------------------------------------------------ */
elseif (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'price')
{
include('includes/cls_json.php');
$goods_id = $_GET['id'];
$act_id = $_GET['act_id'];
$attr = $_GET['attr'];
$attr = explode(',',$_GET['attr']); // 注意这里传递过来的值,有可能是1个值或者2个值或者3个值,具体的要看扩展属性有几个阶梯
foreach($attr as $v){
$attr_price[] = group_attr($v);
}
$total_attr_price = array_sum($attr_price); // 所有扩展分类的总价格
$json = new JSON;
$res = array('err_msg' => '', 'result' => '', 'qty' => 1);
$attr_id = isset($_REQUEST['attr']) ? explode(',', $_REQUEST['attr']) : array();
$number = (isset($_REQUEST['number'])) ? intval($_REQUEST['number']) : 1;
if ($goods_id == 0)
{
$res['err_msg'] = $_LANG['err_change_attr'];
$res['err_no'] = 1;
}
else
{
if ($number == 0)
{
$res['qty'] = $number = 1;
}
else
{
$res['qty'] = $number;
}
// $shop_price = get_final_price($goods_id, $number, true, $attr_id);
$group_info = group_buy_info($act_id); // 获得团购的最终价格
$shop_price = $group_info['cur_price']+$total_attr_price;
$res['result'] = price_format($shop_price * $number);
}
die($json->encode($res));
}
// 获取某个商品的扩展属性价格
function group_attr($goods_attr_id){
$sql = 'select attr_price from '.$GLOBALS['ecs']->table('goods_attr').' where goods_attr_id='.$goods_attr_id;
$result = $GLOBALS['db']->getOne($sql);
return floatval($result );
}
ecshop产品详情,默认改价html
<script type="text/javascript">
var goods_id = {$goods_id};
var goodsattr_style = {$cfg.goodsattr_style|default:1};
var gmt_end_time = {$promote_end_time|default:0};
{foreach from=$lang.goods_js item=item key=key}
var {$key} = "{$item}";
{/foreach}
var goodsId = {$goods_id};
var now_time = {$now_time};
<!-- {literal} -->
onload = function(){
changePrice();
fixpng();
try { onload_leftTime(); }
catch (e) {}
}
/**
* 点选可选属性或改变数量时修改商品价格的函数
*/
function changePrice()
{
var attr = getSelectedAttributes(document.forms['ECS_FORMBUY']);
var qty = document.forms['ECS_FORMBUY'].elements['number'].value;
Ajax.call('goods.php', 'act=price&id=' + goodsId + '&attr=' + attr + '&number=' + qty, changePriceResponse, 'GET', 'JSON');
}
/**
* 接收返回的信息
*/
function changePriceResponse(res)
{
if (res.err_msg.length > 0)
{
alert(res.err_msg);
}
else
{
document.forms['ECS_FORMBUY'].elements['number'].value = res.qty;
if (document.getElementById('ECS_GOODS_AMOUNT'))
document.getElementById('ECS_GOODS_AMOUNT').innerHTML = res.result;
}
}
<!-- {/literal} -->
/*新增 商品点击效果*/
function changeAtt(t,src,key) {
//alert(key);
document.getElementById('spec_value_'+src).checked='checked';
div = document.getElementById("EXP_"+key);
elems = div.getElementsByTagName("dl")[0].getElementsByTagName("a");
for(i=0;i<elems.length;i++){
elems.className='';
}
t.className = "on";
//elems[t].getElementsByTagName("span")[0].style.display="block";
changePrice();
}
php代码
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'price')
{
include('includes/cls_json.php');
$json = new JSON;
$res = array('err_msg' => '', 'result' => '', 'qty' => 1);
$attr_id = isset($_REQUEST['attr']) ? explode(',', $_REQUEST['attr']) : array();
$number = (isset($_REQUEST['number'])) ? intval($_REQUEST['number']) : 1;
if ($goods_id == 0)
{
$res['err_msg'] = $_LANG['err_change_attr'];
$res['err_no'] = 1;
}
else
{
if ($number == 0)
{
$res['qty'] = $number = 1;
}
else
{
$res['qty'] = $number;
}
$shop_price = get_final_price($goods_id, $number, true, $attr_id);
$res['result'] = price_format($shop_price * $number);
}
die($json->encode($res));
}
总结:1.要想点击价格有变动,ajax.all 必须得可以调取到值。
2.给一个团购的id,或者到参加团购商品的团购价格、或者属性
3.有了团购价格,再来获取点击扩展属性,获取扩展属性价格
4.团购价格、扩展属性价格都齐全了,利用ecshop本身的js功能function changePriceResponse 给某个id="ECS_GOODS_AMOUNT">{$group_buy.formated_cur_price}</div>值
本文标签:
很赞哦! ()
下一篇:ecshop二次开发文件架构说明
图文教程
ecshop商品详情页颜色、尺码选择仿淘宝效果的代码示例
修改方法:在网站模板目录下打开 goods.dws 查找如下代码:修改为如下代码:再在网站模板CSS里添加如下CSS
ecshop适应PHP7的实现方法
说实话,ecshop这个系统,到目前也没见怎么推出新版本,如果是新项目,不太建议使用它。不过,因为我一直以来都在使用中,所以不得不更改让其适应PHP新版本。
在ecshop购物车页面怎么显示商品简单描述
1、这里说的商品简单描述,不是商品的详细信息,而是后台编辑商品时在“其他信息”标签栏填写的那个“商品简单描述”,即goods_brief字段
ecshop操作数据库类文件介绍
ECShop v2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现。这样做的好处是实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小。
相关源码
-
(PC+WAP)楼承板建筑工程合金钢铁材料pbootcms网站源码下载为楼承板生产商及建筑工程企业设计的响应式网站模板,采用PbootCMS内核开发,同步适配电脑与移动设备浏览。通过模块化结构展示工程案例、产品参数等专业内容,帮助建筑建材企业建立标准化数字展示平台,提升行业专业形象。查看源码 -
(自适应响应式)化妆美容口红唇膏化妆品模板pbootcms源码下载基于PbootCMS开发的响应式模板,为化妆品品牌、美容机构打造,通过优雅的视觉呈现提升产品展示效果与品牌调性。采用时尚杂志排版风格,色卡系统规范产品展示。微交互动画增强用户体验,智能推荐算法提升产品关联展示效果。查看源码 -
(PC+WAP)铝合金门窗定制pbootcms网站模板源码为铝合金门窗、定制门窗企业打造的高性能网站模板,基于PbootCMS开源内核开发,采用HTML5自适应架构,PC与手机端数据实时同步,覆盖全终端用户交互场景。查看源码 -
(自适应)双语网络电子摄像头设备pbootcms网站模板下载核心功能定位:基于PbootCMS开发的双语摄像头企业官网模板,深度适配产品规格书展示、实时监控演示、解决方案呈现等业务场景,支持中英文内容一键切换。查看源码 -
Wordpress博客新闻主题在线商店平台betheme 21.5.6版BeTheme是一款功能丰富的WordPress主题模板,专注于为各行业提供网站建设解决方案。该模板支持WooCommerce电子商务功能,能够快速搭建在线商店平台,同时适用于博客、新闻资讯类网站建设。自2014年发布以来,该模板已经获得大量用户的使用验证。查看源码 -
自适应建材瓷砖卫浴大理石类pbootcms网站模板源码下载为建材瓷砖、卫浴瓷砖企业打造的高端响应式门户模板,基于PbootCMS内核深度开发。采用前沿HTML5自适应架构,无缝兼容手机端触控交互与PC端展示场景。查看源码
| 分享笔记 (共有 篇笔记) |
