资源描述
指导老师:黄华
毕业学校:清远职业技术学院
ECShop简介
是Comsenz公司推出的一款B2C独立网店系统,现已出售给ShopEX的开发商上海商派网络科技有限公司。适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。
ECShop悉心听取每一位商家的需求与建议,不仅设计了人性化的网店管理系统帮助商家快速上手,还根据中国人的购物习惯改进了购物流程,实现更好的用户购物体验。
经过近两年的发展,ECShop网店系统无论在产品功能、稳定性、执行效率、负载能力、安全性和SEO支持(搜索引擎优化)等方面都居国内同类产品领先地位,成为国内最流行的购物系统之一。
ECShop功能介绍
1. 灵活的模版机制
ECShop开发了独有的高效模板引擎(2.15以前版本使用smarty模板引擎),并结合了Dreamweaver的模板和库功能,使得编辑制作模板变得更简单。
2. 开放的插件机制
支付、配送,会员整合都是以插件形式实现。商家可以随时增加或变更的支付方式和配送体系。ecshop支持大部分php开发的论坛系统,包括discuz,phpwind等,只需在后台做简单参数配置,即可完成会员整合。
3. 功能 AJAX 化
ECSHOP 使用目前流行的 AJAX 技术,批量数据编辑变得更迅速,方便。
4. 促销功能
ECSHOP提供了积分、红包、赠品,夺宝奇兵等多种促销方法。
5. 高效率的代码和执行性能
通过优化代码与数据库结构,配合ecshop独家设计的缓存机制,在不考虑网速的情况下,网店动态页面与纯静态页面访问速度相当。
6. 常规功能的更完善实现
针对常规功能尤其是后台管理和购物流程,ECShop进行了更简洁的设计,实现更好的用户体验。
7. 搜索引擎优化
在 SEO (搜索引擎优化)上,ECShop独家支持两种 URL 重写方式,并且是同类软件中第一家支持 google/ yahoo / microsoft 三家共同发布的 sitemaps 0.9 网站索引规范,能够为站点被搜索引擎收录做到最大限度的支持和帮助。
8. 内置手机短信网关
ECShop内置手机短信网关,支持会员信息群发,订单提醒等功能。
9. 多语言支持
支持简体,繁体,英文。
10. 源代码开放
用户可根据自己的需求对ECSHOP进行定制,扩展。
目录:
1、 ECSHPF版权与标志-前后台 ....................8
1.1前台标志的修改..........................................8
1.2界面友情连接的删除......................................8
1.3去掉底部的Powered by ecshop 270标志......................8
2、 ECSHOP后台为订单增加备注功能 ...............9
2.1添加表:ecs_order_note. ....................................9
2.2.添加语言包 --languages\zh_cn\admin\order.php.................9
2.3修改admin/order.php文件,添加代码..........................9
2.4添加所需代码...........................................10
2.5修改admin\templates\order_info.htm文件....................10
3、 将订单状态设为等待客服确认..................10
3.1将订单状态修改为等待客服确认...........................10
3.2使付款后订单状态为等待客服确认.........................11
3.3修改后台订单状态为等待客服确认..........................11
3.4修改后台订单表语言包...................................11
3.5修改用户订单表语言包...................................12
4、 自定义商品扩展名功能 ................... 12
4.1执行SQL语句.........................................12
4.2添加商品扩展名.......................................12
4.3商品信息页添加商品扩展名.............................12
4.4修改语言包...........................................13
4.5修改商品添加文件.....................................13
4.6修改商品显示文件.....................................13
4.7在前台商品页显示商品名称扩展.........................13
4.8修改商品栏目页显示文件...............................13
4.9在分类列表页显示商品名称扩展.........................14
5、 多货币解决方案 ...........................14
5.1执行SQL语句.....................................14
5.2修改多货币语言包..................................14
5.3修改头部模版文件..................................15
5.4加载页面session值.................................15
5.5格式化商品价格....................................15
5.6在订单列表中添加货币信息,执行SQL语句...........16
.
5.7添加购物时的货币信息..............................17
5.8后台订单显示货币类型和相应额度....................17
5.9输出货币类型和额度................................17
6、 使用Ajax更新商品页商品购买数量............18
6.1添加js代码.......................................18
6.2更改以下内容.....................................18
7、 使用Ajax更新购物车商品购买数量............18
7.1修改模版文件夹下的flow.dwt文件....................18
7.2代码的修改.......................................19
7.3改根目录下的flow.php文件..........................20
8、 商品展示放大镜效果 .......................21
8.1载入样式和脚本切换到当前使用的模板目录中...........21
8.2执行SQL语句.......................................21
8.3添加底部相册切换功能...............................21
8.4缩略图的配置.......................................22
8.5如何获得指定商品的相册缩略图.......................23
9、 商品展示放大镜效果 ...............24
9.1函数的编写与替换.................................24
9.2添加一个js函数,用以颜色的选择..................24
9.3获取表单传过来的颜色代码值......................25
10、 产品组合功能开发 ........................26
10.1修改根目录.....................................26
10.2修改模版目录...................................27
11、 限时购功能开发 ..........................28
11.1修改程序......................................28
11.2代码替换......................................28
12、 秒杀功能开发..............................29
12.1执行sql语句..................................29
12.2代码的添加修改与替换..........................29
1、ECSHPF版权与标志-前后台
一、前台标志的修改
因为是借助了dede的模板进行二次开发,当然首先是要对模板进行编辑,模板一开始是没有那么全面的,排版也计较随意大体,内容也没有,显得比较空洞,当然了,这些都是我们去排版和编辑内容的,首先呢,最重要的是dede模板标志和lougou的删除和修改了,标志有很多,前台后台都有,我们要注意,细心观察,把他改成自己要设计的内容和风格,虽然说是拿来主义,但是拿来了就要会利用,所以一下的修改的方法:
前台部分:
去掉头部TITLE部分的ECSHOP演示站 Powered by ecshop
前者在后台商店设置 - 商店标题修改
后者打开includes/lib_main.php
$page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ECShop';
修改这里的'Powered by ECShop
二、界面友情连接的删除
去掉友情链接部分
在后台的友情链接管理里修改
三、去掉底部的Powered by ecshop 270 ,和部分标志
打开 js/common.js
删除第244行
onload = function(){
var link_arr = document.getElementsByTagName(String.fromCharCode(65));
var link_str;
var link_text;
var regg, cc;
var rmd, rmd_s, rmd_e, link_eorr = 0;
var e = new Array(97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
120, 121, 122);
再打开模板文件夹的 library/page_footer.lbi
删除 {foreach from=$lang.p_y item=pv}{$pv}{/foreach}{$licensed}
很多页面源代码的 头部信息中会自动产生一行代码
<meta name="Generator" content="ECSHOP v2.7.1" />
应该也算是ECSHOP预留的版权信息吧,下面讲一下怎么删除这行代码,让系统不再自动产生。
打开 includes/cls_template.php 文件,大概在1087行左右,找到
$source = preg_replace('/<head>/i', "<head>\r\n<meta name=\"Generator\" content=\"" . APPNAME .' ' . VERSION . "\" />", $source);
将之删除或者注释掉即可。
后台部分:1.去除两张图片
admin/images/ecshop_logo.gif
admin/images/login.png
删除右上角的“关于ECSHOP”
打开admin/templates/top.htm
删除: <li><a href="index.php?act=about_us" target="main-frame">{$lang.about}</a></li>
3.中部 ECSHOP 管理中心, 和底部的版权所有
打开language/zh_cn/admin/common.php
$_LANG['cp_home'] = 'ECSHOP 管理中心';
$_LANG['copyright'] = '版权所有 © 2005-2009 上海商派网络科技有限公司,并保留所有权利。';
2、ECSHOP后台为订单增加备注功能
一、添加表:ecs_order_note;
CREATE TABLE IF NOT EXISTS `ecs_order_note` (
`note_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`order_id` mediumint(8) unsigned NOT NULL,
`note_value` text NOT NULL,
PRIMARY KEY (`note_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
二、添加语言包 --languages\zh_cn\admin\order.php
/* 订单备注*/
$_LANG['label_order_note'] = '客服人员订单备注:';
三、 修改admin/order.php文件第103行,添加代码:
/*------------------------------------------------------ */
//-- 保存订单备注
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'save_ordernote'){
$oid = $_REQUEST['oid'];
$oval = $_REQUEST['noteVal'];
$sql = "select count(note_value) from " . $ecs->table('order_note') .
" where order_id = $oid";
$note_count = $db->getOne($sql);
if ($note_count == 0){
$sql = "insert into " . $ecs->table('order_note') .
"(order_id,note_value) values(" . $oid . ",'" . $oval . "')";
} else{
$sql = "update " . $ecs->table('order_note') . " set note_value = '" . $oval .
"' where order_id = " . $oid;}
$db->query($sql);
//echo "订单备注已保存!"}
四、添加所需代码
在以下代码下加入
/* 取得能执行的操作列表 */
$operable_list = operable_list($order);
$smarty->assign('operable_list', $operable_list);
/* 取得订单备注-- */
$sql = "SELECT note_value FROM " . $ecs->table('order_note') .
" WHERE order_id = '$order[order_id]'";
$order_note = $db->getOne($sql);
$smarty->assign('order_note', $order_note);
五、修改admin\templates\order_info.htm文件,
<tr>
<td><div align="right"><strong>{$lang.label_action_note}</strong></div></td>
<td colspan="5"><textarea name="action_note" cols="80" rows="3"></textarea></td>
</tr>
<tr>
在上面代码后面加入以下代码:
<tr>
<td><div align="right"><strong>{$lang.label_order_note}</strong></div></td>
<td colspan="5">
<textarea name="order_note" cols="80" rows="3" onblur="saveOrderNote({$smarty.request.order_id},this)">{$order_note}</textarea>
</td>
</tr>
在本文件admin\templates\order_info.htm的JS代码中加入下面内容
/**
* 保存订单备注
*/
function saveOrderNote(oid,parm){
var noteVal = parm.value;
Ajax.call('order.php?is_ajax=1&act=save_ordernote&oid='+oid+'¬eVal='+noteVal,'', saveOrderResponse, 'POST', '');}
function saveOrderResponse(result){
//alert(result);}
删除订单时删除关联的订单备注admin/order.php
3、将订单状态设为等待客服确认
一、将订单状态修改为等待客服确认
/includes/lib_payment.php ,以下
/* 修改订单状态为已付款 */
$sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_info') .
" SET order_status = '" . OS_CONFIRMED . "', " .
" confirm_time = '" . gmtime() . "', " .
" pay_status = '$pay_status', " .
" pay_time = '".gmtime()."', " .
" money_paid = order_amount," .
" order_amount = 0 ".
"WHERE order_id = '$order_id'";
$GLOBALS['db']->query($sql);
/* 记录订单操作记录 */
order_action($order_sn, OS_CONFIRMED, SS_UNSHIPPED, $pay_status, $note, $GLOBALS['_LANG']['buyer']);
修改为:
/* 修改订单状态为已付款 */
$sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_info') .
" SET order_status = '" . OS_UNCONFIRMED . "', " .
" confirm_time = '" . gmtime() . "', " .
" pay_status = '$pay_status', " .
" pay_time = '".gmtime()."', " .
" money_paid = order_amount," .
" order_amount = 0 ".
"WHERE order_id = '$order_id'";
$GLOBALS['db']->query($sql);
/* 记录订单操作记录 */
order_action($order_sn, OS_UNCONFIRMED, SS_UNSHIPPED, $pay_status, $note, $GLOBALS['_LANG']['buyer']);
二、使付款后订单状态为等待客服确认
/flow.php ,以下
$order['order_status'] = OS_CONFIRMED;
修改为
$order['order_status'] = OS_UNCONFIRMED;
三、修改后台订单状态为等待客服确认
/Admin/ order.php ,以下代码
order_action($order['order_sn'],OS_CONFIRMED,SS_UNSHIPPED,PS_UNPAYED, $action_note);
修改为
order_action($order['order_sn'],OS_CONFIRMED,SS_UNSHIPPED, $order['pay_status'], $action_note);
一共有三处,只需修改“批处理订单”和“操作订单状态(处理提交)”,不修改“todo 处理退款”
四、修改后台订单表语言包
/languages/zh_cn/admin/order.php,以下代码
$_LANG['os'][OS_ UNCONFIRMED] = '未确认';
修改为:
$_LANG['os'][OS_UNCONFIRMED] = '等待客服确认';
五、修改用户订单表语言包
/languages/zh_cn/ user.php
$_LANG['os'][OS_ UNCONFIRMED] = '未确认';
修改为:
$_LANG['os'][OS_UNCONFIRMED] = '等待客服确认';
4、自定义商品扩展名功能
一、执行SQL语句。
在phpmyadmin下选择ecshop数据库,执行以下语句,在ecs_goods表中增加商品扩展名字
ALTER TABLE `ecs_goods` ADD `goods_name_extends` VARCHAR( 80 ) NOT NULL AFTER `goods_name`
二、添加商品扩展名
/admin/templates/goods_list.htm ,以下代码
<th><ahref="javascript:listTable.sort('goods_name'); ">{$lang.goods_name}</a>{$sort_goods_name}</th>
后面添加:
<th><ahref="javascript:listTable.sort('goods_name_extends');">{$lang.goods_name_extends}</a>{$sort_goods_name_extends}</th>
以下代码
<td class="first-cell" style="{if $goods.is_promote}color:red;{/if}"><span onclick="listTable.edit(this, 'edit_goods_name', {$goods.goods_id})">{$goods.goods_name|escape:html}</span></td>
后面添加
<td class="first-cell" style="{if $goods.is_promote}color:red;{/if}"><span id="goods_extends" onclick="listTable.edit_teshu(this, 'edit_goods_name_extends', {$goods.goods_id})">{$goods.goods_name_extends|escape:html} </span></td>
三、商品信息页添加商品扩展名
/admin/templates/goods_info.htm , 以下代码
<tr><td class="label">{$lang.lab_goods_name}</td>
<td><input type="text" name="goods_name" value="{$goods.goods_name|escape}" style="float:left;color:{$goods_name_color};" size="30" />
<div style="background-color:{$goods_name_color};float:left;margin-left:2px;" id="font_color" onclick="ColorSelecter.Show(this);"><img src="images/color_selecter.gif" style="margin-top:-1px;" /></div><input type="hidden" id="goods_name_color" name="goods_name_color" value="{$goods_name_color}" />
<select name="goods_name_style">
<option value="">{$lang.select_font}</option>
{html_options options=$lang.font_styles selected=$goods_name_style}
</select>
{$lang.require_field}</td>
</tr>
后面添加
<tr>
<td class="label">{$lang.lab_goods_name_extends}</td>
<td><input type="text" name="goods_name_extends" value="{$goods.goods_name_extends|escape}" style="float:left;color:{$goods_name_color};" size="30" /></td>
</tr>
四、修改语言包
/languages/zh_cn/admin/goods.php ,以下代码
$_LANG['goods_name'] = '商品名称';
后面添加
$_LANG['goods_name_extends'] = '商品扩展名称';
以下代码
$_LANG['lab_goods_name'] = '商品名称:';
后面添加
$_LANG['lab_goods_name_extends'] = '商品扩展名称:';
五、修改商品添加文件
/admin/goods.php ,以下代码
$sql = "INSERT INTO " . $ecs->table('goods') . " (goods_name,
修改为(共两处)
$sql = "INSERT INTO " . $ecs->table('goods') . " (goods_name, goods_name_extends,
以下代码
"VALUES ('$_POST[goods_name]','
修改为(共两处)
"VALUES ('$_POST[goods_name]','$_POST[goods_name_extends]',
以下代码
$sql = "UPDATE " . $ecs->table('goods') . " SET " .
"goods_name = '$_POST[goods_name]', " .
后面添加
"goods_name_extends = '$_POST[goods_name_extends]', " .
六、修改商品显示文件
/admin/includes/lib_goods.php ,以下代码
$sql = "SELECT goods_id, goods_name,
修改为
$sql = "SELECT goods_id, goods_name, goods_name_extends ,
七、在前台商品页显示商品名称扩展
在当前使用的模版文件夹下的goods.dwt ,以下代码
{$goods.goods_style_name}
后面添加
{$goods.goods_name_extends}
八、修改商品栏目页显示文件
/catagory.php ,以下代码
/* 获得商品列表 */
$sql = 'SELECT g.goods_id, g.goods_name,
后面添加
g.goods_name_extends,
以下代码
$arr[$row['goods_id']]['goods_brief'] = $row['goods_brief'];
后面添加
$arr[$row['goods_id']]['goods_name_extends'] = $row['goods_name_extends'];
九、在分类列表页显示商品名称扩展
在当前使用的模版文件夹下的library/goods_list.lbi ,以下代码
<p class="name">
<!-- {if $goods.watermark_img} -->
<span class="watermark_small {$goods.watermark_img}">{$goods.watermark_img}</span>
<!-- {/if} -->
<a href="{$goods.url}" title="{$goods.name|escape:html}">{$goods.goods_name}</a></p>
修改为
<p class="name">
<!-- {if $goods.watermark_img} -->
<span class="watermark_small {$goods.watermark_img}">{$goods.watermark_img}</span>
<!-- {/if} -->
<a href="{$goods.url}" title="{$goods.name|escape:html}">{$goods.goods_style_name}</a>
{$goods.goods_name_extends}</p>
5、多货币解决方案
一、执行SQL语句
在phpmyadmin下选择ecshop数据库,执行以下语句,在ecs_shop_config表中插入
INSERT INTO `ecs_shop_config` (
`id` ,`parent_id` ,`code` ,`type` ,`store_range` ,`store_dir` ,`value` ,`sort_order` ) VALUES
(NULL , '1', 'rate', 'text', '', '', '1,0.71,0.69,6.85,1.45', '1'),
(NULL , '1', 'ybprice_format', 'text', '', '', '&%s', '1' ),
(NULL , '1', 'aprice_format', 'text', '', '', 'EUR%s', '1'),
(NULL , '1', 'cprice_format', 'text', '', '', '¥%s', '1'),
(NULL , '1', 'aoprice_format', 'text', '', '', 'AU%s', '1');
二、修改多货币语言包
/languages/zh_cn/admin/shop_config.php ,添加以下语句
$_LANG['cfg_name']['rate'] = '货币汇率';
$_
展开阅读全文