搜档网
当前位置:搜档网 › ECShop功能介绍

ECShop功能介绍

ECShop功能介绍
ECShop功能介绍

指导老师:黄华

毕业学校:清远职业技术学院

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}

很多页面源代码的头部信息中会自动产生一行代码

应该也算是ECSHOP预留的版权信息吧,下面讲一下怎么删除这行代码,让系统不再自动产生。

打开includes/cls_template.php 文件,大概在1087行左右,找到

$source = preg_replace('//i', "\r\n", $source);

将之删除或者注释掉即可。

后台部分:1.去除两张图片

admin/images/ecshop_logo.gif

admin/images/login.png

删除右上角的“关于ECSHOP”

打开admin/templates/top.htm

删除:

  • {$lang.about}
  • 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文件,

    {$https://www.sodocs.net/doc/0114916335.html,bel_action_note}

    在上面代码后面加入以下代码:

    {$https://www.sodocs.net/doc/0114916335.html,bel_order_note}

    在本文件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` V ARCHAR( 80 ) NOT NULL AFTER `goods_name`

    二、添加商品扩展名

    /admin/templates/goods_list.htm ,以下代码

    ">{$lang.goods_name}{$sort_goods_name}

    后面添加:

    {$lang.goods_name_extends}{$sort_goods_name_extends}

    以下代码

    {$goods.goods_name|escape:html}

    后面添加

    {$goods.goods_name_extends|escape:html} 

    三、商品信息页添加商品扩展名

    /admin/templates/goods_info.htm ,以下代码

    {$https://www.sodocs.net/doc/0114916335.html,b_goods_name}

     

    {$lang.require_field}

    后面添加

    {$https://www.sodocs.net/doc/0114916335.html,b_goods_name_extends}

    四、修改语言包

    /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, 以下代码

    "V ALUES ('$_POST[goods_name]','

    修改为(共两处)

    "V ALUES ('$_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 ,以下代码

    {$goods.watermark_img}

    {$goods.goods_name}

    修改为

    {$goods.watermark_img}

    {$goods.goods_style_name} {$goods.goods_name_extends}

    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'] = '货币汇率';

    $_LANG['cfg_name']['ybprice_format'] = '英镑格式';

    $_LANG['cfg_name']['aprice_format'] = '欧元格式';

    $_LANG['cfg_name']['cprice_format'] = '人民币格式';

    $_LANG['cfg_name']['aoprice_format'] = '澳元格式';

    $_LANG['cfg_desc']['rate'] = '输入规则按照和美元的汇率进行输入

    US,EUR,BritishPound,China,Austrilian';

    $_LANG['cfg_desc']['ybprice_format'] = '显示英镑格式,%s将被替换为相应的价格';

    $_LANG['cfg_desc']['aprice_format'] = '显示欧元格式,%s将被替换为相应的价格';

    $_LANG['cfg_desc']['cprice_format'] = '显示人民币格式,%s将被替换为相应的价格';

    $_LANG['cfg_desc']['aoprice_format'] = '显示澳元格式,%s将被替换为相应的价格';

    三、修改头部模版文件

    当前使用模版目录下的library/page_header.lbi ,以下代码

      后面添加

      美元  

      英镑 

      欧元 

      人民币 

      澳元

      四、加载页面session值

      /include/init.php 页面尾端添加

      $url_this="http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?id=".@$_GET['id']; //echo $url_this;

      $smarty->assign("url_head",$url_this);

      $currency=@$_GET['currency'];

      if ($currency!=""){

      $_SESSION['currency']=$currency;}

      if ($_SESSION['currency']==''){

      $_SESSION['currency']='USD';}

      五、格式化商品价格

      /includes/lib_common.php,在文档后面添加以下代码

      /**

      * 格式化商品价格

      *

      * @access public

      * @param float $price 商品价格

      * @return string

      */

      case 0:

      $price = number_format($price, 2, '.', '');

      break;

      case 1: // 保留不为0 的尾数

      $price = preg_replace('/(.*)(\\.)([0-9]*?)0+$/', '\1\2\3', number_format($price, 2, '.', ''));

      if (substr($price, -1) == '.') {

      $price = substr($price, 0, -1);}

      break;

      case 2: // 不四舍五入,保留1位

      $price = substr(number_format($price, 2, '.', ''), 0, -1);

      break;

      case 3: // 直接取整

      else{

      $price = number_format($price, 2, '.', '');}

      switch($currency){

      case 'USD':

      return sprintf($GLOBALS['_CFG']['currency_format'], $price);

      break;

      case 'EUR':

      return sprintf($GLOBALS['_CFG']['aprice_format'], $price)

      六、在订单列表中添加货币信息

      执行SQL语句

      ALTER TABLE `ecs_order_info` ADD `currency` V ARCHAR( 10 ) NOT NULL ,

      ADD `new_money` DECIMAL( 10, 2 ) NOT NULL

      添加购物时的货币信息,/flow.php 在以下代码

      //分成功能关闭

      $parent_id = 0;}

      $order['parent_id'] = $parent_id;

      后添加

      $order['currency']=$_SESSION['currency'];

      $order['new_money']=price_format_hs($order['order_amount']);

      增加购物时的支付换算/includes/lib_common.php 增加price_format_hs函数

      /**

      * 用于支付换算

      *

      * @access public

      * @param float $price 商品价格

      * @return string

      */

      function price_format_hs($price, $change_price = true){

      $currency=$_SESSION['currency'];

      $rate=explode(',',$GLOBALS['_CFG']['rate']);

      $price = preg_replace('/(.*)(\\.)([0-9]*?)0+$/', '\1\2\3', number_format($price, 2, '.', ''));

      if (substr($price, -1) == '.'){

      $price = substr($price, 0, -1);}

      break;

      case 2: // 不四舍五入,保留1位

      $price = substr(number_format($price, 2, '.', ''), 0, -1);

      break;

      case 3: // 直接取整

      $price = intval($price);

      break;

      case 4: // 四舍五入,保留1 位

      $price = number_format($price, 2, '.', '');}

      return $price;}

      七、修改多货币支持的贝宝插件

      /includes/modules/payment/paypal.php

      function get_code($order, $payment)

      {

      $paypal_currency = $_SESSION["currency"]; //获取当前货币类型的Session值

      $data_order_id = $order['log_id'];

      //$data_amount = $order['order_amount'];

      $data_amount = $order['new_money']; //将上行内容改成new_money

      $data_return_url = return_url(basename(__FILE__, '.php'));

      $data_pay_account = $payment['paypal_account'];

      //$currency_code = $payment['paypal_currency'];

      $currency_code = $paypal_currency; //将上行内容修改

      八、后台订单显示货币类型和相应额度

      /admin/templates/order_list.htm ,以下代码

      {$lang.consignee}{$sort_consignee}

      {$lang.total_fee}{$sort_total_fee}

      后面添加

      货币类型

      转换后货币额度

      以下代码

      {$order.formated_total_fee}

      {$order.formated_order_amount}

      后面添加

      {$order.currency}

      {$order.new_money}

      九、输出货币类型和额度

      /admin/order.php ,以下代码

      /* 查询*/

      $sql = "SELECT o.order_id, o.order_sn,

      修改为:

      /* 查询*/

      $sql = "SELECT o.order_id, o.order_sn, o.currency,o.new_money,

      以下代码

      function order_list(){

      后面添加

      $_SESSION["currency"] = 'USD';

      6、使用Ajax更新商品页商品购买数量

      sub_one.jpg和add_one.jpg和拷贝到模板目录下的images目录里

      一、修改模版文件夹下的goods.dwt文件

      添加js代码

      在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 changePriceNum($m){

      var attr = getSelectedAttributes(document.forms['ECS_FORMBUY']);

      var qty = document.forms['ECS_FORMBUY'].elements['number'].value;

      if (isNaN(qty)){

      qty = 1;

      alert("商品数量必须输入数字"); }

      if($m == '+'){

      qty++}else if(qty > 1 && $m == '-'){

      qty--}else{

      qty = 1;

      return false;}

      Ajax.call('goods.php', 'act=price&id=' + goodsId + '&attr=' + attr + '&number=' + qty, changePriceResponse, 'GET', 'JSON');}

      二、代码的更改

      为如下所示:

      7、使用Ajax更新购物车商品购买数量

      js文件拷贝到模板目录下的js目录里

      一、修改模版文件夹下的flow.dwt文件

      1、添加js代码

      后面加入以下内容