04月 30th, 2011 by leaplee | No Comments | Filed in ECShop二次开发
php文件(*.php)有代码如下:
$phparray=array(‘a’,'b’);
$smarty->assign(‘array‘, $phparray);
对应的模板文件(*.dwt)有代码如下:
<!–{foreach from=$array name=arrayname item=db}–>
{$smarty.foreach.arrayname.index} – {$db}
<!–{/foreach}–>
则输出结果为:
0 – a
1 – b
如果dwt模版中的$smarty.foreach.arrayname.index换成$smarty.foreach.arrayname.iteration
则输出结果为:
1 – a
2 – b
也就是说,index是从0开始,而iteration则从1开始算起,对应的变量名使用参考标出的颜色查阅上述代码,不再赘述
-eof-
09月 25th, 2010 by leaplee | No Comments | Filed in ECShop二次开发
每次用户进入echsop购物流程的时候当需要更改购物车里的商品数量的时候必须要手动点击更新按钮,这是非常糟糕的用户体验,我们有必要去改进这一点。
以下是通过AJAX方式来动态更新ECShop购物车页面商品数量的解决办法
一、前端页面部分(flow.dwt)
在商品数量的input框添加对应的js函数
<INPUT onblur=”changePrice(document.getElementById(‘goods_number_{$goods.rec_id}’).value,{$goods.rec_id})” name=”goods_number[{$goods.rec_id}]” id=”goods_number_{$goods.rec_id}” value=”{$goods.goods_number}” id=”ECS_FORMBUY”>
在文件最后添加一段js
<script type=”text/javascript”>
function changePrice(number,rec_id)
{
var attr = getSelectedAttributes(document.forms['ECS_FORMBUY']);
var qty = document.forms['ECS_FORMBUY'].elements['number'].value;
Ajax.call(‘flow.php’, ‘step=update_group_cart&rec_id=’ + rec_id +’&number=’ + number, changePriceResponse, ‘GET’, ‘JSON’);
}
function changePriceResponse(res)
{
if (res.error > 0)
{
document.getElementById(‘sysmsg_error’).innerHTML = res.content;
document.all.sysmsg_error.style.display=”;
}
else
{
if(document.all.sysmsg_error.style.display==”)
{
document.all.sysmsg_error.style.display=’none’;
}
document.getElementById(‘subtotal_’+res.rec_id).innerHTML = res.subtotal;
document.getElementById(‘cart_amount’).innerHTML = res.cart_amount;
}
}
</script>
二、在flow.php文件中插入对应的处理代码:
elseif($_REQUEST['step'] == ‘update_group_cart’)
{
include_once(‘includes/cls_json.php’);
$json = new JSON();
$result = array(‘error’ => ”, ‘content’ => ”);
$rec_id = $_GET['rec_id'];
$number = $_GET['number'];
$group_buy = group_buy_info($_SESSION['extension_id'], $number);
if(!is_numeric($number))
{
$result['error'] = ’1′;
$result['content'] =’请输入合法数量’;
die($json->encode($result));
}
if ($group_buy['restrict_amount'] > 0 && $number > ($group_buy['restrict_amount'] – $group_buy['valid_goods']))
{
$result['error'] = ’1′;
$restrict_amount = $group_buy['restrict_amount'] – $group_buy['valid_goods'];
$result['content'] =’您最多可买’.$restrict_amount.’件’;
die($json->encode($result));
}
$sql = “UPDATE ” . $GLOBALS['ecs']->table(‘cart’) . ” SET goods_number = ‘$number’ WHERE rec_id = $rec_id”;
$GLOBALS['db']->query($sql);
$subtotal = $GLOBALS['db']->getONE(“select goods_price * goods_number AS subtotal from “.$GLOBALS['ecs']->table(‘cart’).” where rec_id = $rec_id”);
$cart_amount = cart_amount(”,$_SESSION['flow_type']);
$result['subtotal'] = price_format($subtotal, false);
$result['cart_amount'] = price_format($cart_amount, false);
$result['rec_id'] = $rec_id;
die($json->encode($result));
}
还等什么?马上清空echsop的缓存刷新页面看看效果吧。
09月 11th, 2010 by leaplee | No Comments | Filed in ECShop二次开发
前言:ECSHOP是一套完整的网络商店解决方案,包括前台的商品展示、购物流程和强大易用的后台管理。由于ecshop简单易用,使用者几乎可以在3几分钟简单的设置一下就可以拥有一个网上商店系统,所以很多的B2C站点都选择了使用ECShop网上商店系统,但是有时候我们需要做一些ecshop本来没有的功能或者前端展示,这时候就需要我们自己去进行对ecshop的二次开发了。
一、ecshop系统功能二次开发
ecshop的代码结构非常易懂,只有有一点php基础都可以在原有的程序基础上进行修改,或功能插件的开发。
ecshop中的一些公用函数都会放在includes文件夹里,而这些公用函数几乎我们都可以用来参照一下就能轻松做出我们想要的其他功能了。
我们要对ecshop进行二次开发,简单来说其实就是对数据库的读写操作,所以只要我们读懂ecshop的数据库操作类,接下来的实现就很轻松了。
ecshop的数据库操作类是很强大的,一些常用的函数如下:文章来源于ECShop实验室www.ecshoplab.com
1.获取单条记录
$GLOBALS['db']->getRow($sql);
2.获取单一字段
$GLOBALS['db']->getOne($sql);
例如查询产品总数:
echo $GLOBALS['db']->getOne(‘SELECT COUNT(*) FROM ‘ . $GLOBALS['ecs']->table(‘goods’) ;
3.获取所有记录
$GLOBALS['db']->getAll($sql);
4.执行sql语句
$GLOBALS['db']->query($sql);
//执行删除(DELETE),插入(INSERT),更新(UPDATE)等操作可用此方法
5.把数组元素插入数据库
$parent['goods_number'] = ’1′;
$parent['parent_id'] = 0;
$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table(‘cart’), $parent, ‘INSERT’);
基于此基础上就能轻松进行ecshop二次开发了。
二、ecshop前端模板的二次开发
ecshop有强大的模版机制,ECSHOP 结合Dreamweaver实现了一套模版机制,改动模版不再需要上传,而是在后台稍稍动动手设置一下就可以了。
ecshop采用smarty模板技术,Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。
在php文件中使用assign方法把php变量传值给模板文件,例如:
$smarty->assign(‘action’, $action);
//把php中的变量$action传值给模板文件(*.dwt)中的’action’变量,模板文件可用{$action}来输出此值。
使用display方法来指定当前的模板文件并输出到该文件显示到客户端,例如:$smarty->display(‘user_passport.dwt’);
09月 7th, 2010 by leaplee | 1 Comment | Filed in ECShop二次开发
何为ECShop二次开发?
所谓ECShop二次开发,也称之为ecshop功能开发、ecshop插件开发,同时某些时候ecshop的模板开发也可认为是对ecshop的二次开发。ECShop二次开发就是对开源网店系统Ecshop的功能或外观的补充,在原有的程序基础上加以功能性的优化与外观性的美化,或特定的功能拓展。
什么是ecshop网店系统?
ecshop是一个国内非常优秀的开源php电子商务(网上商城)程序,也称之为网店系统;ECShop提供了灵活强大的模板机制,能快速建立不同的网站外观。同时可对网站模板自定义设计,建立个性化网站形象。
二次开发的定义
二次开发,简单的说就是在现有的程序基础上进行定制修改,功能的扩展,然后达到自己想要的功能,一般来说都不会改变原有程序的内核,而是根据自身需求在原有的程序上进行第二次有针对性的开发。
文章来源于ECShop实验室www.ecshoplab.com
怎么做Ecshop的二次开发?
(1)有PHP语言基础,能看懂代码是最基本的。
(2)要对Ecshop网店系统的功能和使用要有比较熟悉,这样才知道一个需求下来,需要改什么,什么是网店系统自带的,大概要怎么改。文章来源于ECShop实验室www.ecshoplab.com
(3)要熟悉Ecshop的数据结构,代码结构,程序的框架结构,核心是哪里,附属功能是在哪里。简而言之就是对数据库,代码逻辑和文件目录的熟悉。
(4)根据具体需求,利用Ecshop的内核,进行功能性的扩展和修改,以达到实际需求。
ECShop二次开发技巧
首先要读懂ecshop底层代码,知道它的函数是怎样构造的,这点很重要,因为ecshop底层封装了很多的操作类,有模板机制的,数据库操作的等等。
读懂了之后就能依样画葫芦了,可以很轻松的进行二次开发。ECShop二次开发的核心思想就是先模仿再创造。
完成ecshop二次开发后能得到什么?
完成特定的需求,能积累项目经验,汲取ecshop网店系统的精华,然后融入自身的编程思想里,总结项目架构的经验。俗话说,聪明的人会把他人的失败经验当作自身经验,而愚蠢的人则是经历无数次失败后才作为经验。站在巨人的肩膀上,你将看的更远!成长得更快!
09月 4th, 2010 by leaplee | 1 Comment | Filed in 实验室档案
ECShop 2.7.2版本提供了一个新的特性:货品。
具有不同属性的商品类型可以根据不同属性录入相应的货号以及库存数量,这对于一些商家是很有用处了,特别是在ERP中,有着严格库存控制需求的环境下。
但是前台部分却还没有跟上这一新特性的步伐,文章来源于ECShop实验室www.ecshoplab.com选择了不同属性的时候库存依然是商品的总库存,虽然点击购买的时候是根据货品的库存来判断的。
所以这一点上是没有足够好的用户体验,我们有必要改善,为ECShop商品详情页添加动态库存动态货号的功能。
主要是通过原有的json来实现文章来源于ECShop实验室www.ecshoplab.com
在goods.php的
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == ‘price’)
这一处理中添加一个调用货品库存/货号的语句
通过js动态更新到ecshop商品详情页面上去。
演示请看:http://www.f9696.com
09月 4th, 2010 by leaplee | No Comments | Filed in 实验室档案
ecshop启用伪静态后,报错The requested URL /var/www/shop/goods.php was not found on this server.
因为我自己的服务器一些相关的配置可能导致ecshop的rewrite规则(.htaccess)无法生效。文章来源于ECShop实验室www.ecshoplab.com
其原因是RewriteBase
修改ecshop的.htaccess/htaccess.txt
#RewriteBase /
把这行前面的注释去掉就可以了。
09月 1st, 2010 by leaplee | No Comments | Filed in ECShop二次开发
ECShop实验室提供ECShop二次开发服务
我们ecshop实验室一直都围绕着ecshop做开发,所有程序都是跑在客户的实际生产环境的。
我们可以为客户量身定做,只要你有想法我们都能为你实现出来,这就是我们的二次开发服务使ecshop成为你网络营销的利器。
08月 27th, 2010 by leaplee | No Comments | Filed in 实验室档案
E-Commerce Online-Shop-System Laboratory发布我们实验室的技术文档,ecshop实验室专注于ecshop功能开发,ecshop二次开发,ecshop程序开发,ecshop的插件开发。