admin 管理员组文章数量: 1184232
2024年3月9日发(作者:eclipse官网下载以前版本)
指导老师:黄华
毕业学校:清远职业技术学院
1
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进行了更简洁的设计,实现更好的用户体验。
2
7. 搜索引擎优化
在 SEO (搜索引擎优化)上,ECShop独家支持两种 URL 重写方式,并且是同类软件中第一家支持 google/ yahoo / microsoft 三家共同发布的 sitemaps
0.9 网站索引规范,能够为站点被搜索引擎收录做到最大限度的支持和帮助。
8. 内置手机短信网关
ECShop内置手机短信网关,支持会员信息群发,订单提醒等功能。
9. 多语言支持
支持简体,繁体,英文。
10. 源代码开放
用户可根据自己的需求对ECSHOP进行定制,扩展。
3
目录:
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.添加语言包 --languageszh_.................9
2.3修改admin/文件,添加代码..........................9
2.4添加所需代码...........................................10
2.5修改admintemplatesorder_文件....................10
3、 将订单状态设为等待客服确认..................10
3.1将订单状态修改为等待客服确认...........................10
3.2使付款后订单状态为等待客服确认.........................11
3.3修改后台订单状态为等待客服确认..........................11
3.4修改后台订单表语言包...................................11
3.5修改用户订单表语言包...................................12
4、 自定义商品扩展名功能 ................... 12
4
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
5
6.1添加js代码.......................................18
6.2更改以下内容.....................................18
7、 使用Ajax更新购物车商品购买数量............18
7.1修改模版文件夹下的文件....................18
7.2代码的修改.......................................19
7.3改根目录下的文件..........................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
6
10.2修改模版目录...................................27
11、 限时购功能开发 ..........................28
11.1修改程序......................................28
11.2代码替换......................................28
12、 秒杀功能开发..............................29
12.1执行sql语句..................................29
12.2代码的添加修改与替换..........................29
7
1、ECSHPF版权与标志-前后台
一、前台标志的修改
因为是借助了dede的模板进行二次开发,当然首先是要对模板进行编辑,模板一开始是没有那么全面的,排版也计较随意大体,内容也没有,显得比较空洞,当然了,这些都是我们去排版和编辑内容的,首先呢,最重要的是dede模板标志和lougou的删除和修改了,标志有很多,前台后台都有,我们要注意,细心观察,把他改成自己要设计的内容和风格,虽然说是拿来主义,但是拿来了就要会利用,所以一下的修改的方法:
前台部分:
去掉头部TITLE部分的ECSHOP演示站 Powered by ecshop
前者在后台商店设置 - 商店标题修改
后者打开includes/lib_
$page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ECShop';
修改这里的'Powered by ECShop
二、界面友情连接的删除
去掉友情链接部分
在后台的友情链接管理里修改
三、去掉底部的Powered by ecshop 270 ,和部分标志
打开 js/
删除第244行
onload = function(){
var link_arr = mentsByTagName(arCode(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_
删除 {foreach from=$lang.p_y item=pv}{$pv}{/foreach}{$licensed}
很多页面源代码的 头部信息中会自动产生一行代码
应该也算是ECSHOP预留的版权信息吧,下面讲一下怎么删除这行代码,让系统不再自动产生。
打开 includes/cls_ 文件,大概在1087行左右,找到
$source = preg_replace('/
/i', "rnAPPNAME .' ' . VERSION . "" />", $source);
将之删除或者注释掉即可。
后台部分:1.去除两张图片
admin/images/ecshop_
8
admin/images/
删除右上角的“关于ECSHOP”
打开admin/templates/
删除:
3.中部 ECSHOP 管理中心, 和底部的版权所有
打开language/zh_cn/admin/
$_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 ;
二、添加语言包 --languageszh_
/* 订单备注*/
$_LANG['label_order_note'] = '客服人员订单备注:';
三、 修改admin/文件第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);
9
//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);
五、修改admintemplatesorder_文件,
在上面代码后面加入以下代码:
在本文件admintemplatesorder_的JS代码中加入下面内容
/**
* 保存订单备注
*/
function saveOrderNote(oid,parm){
var noteVal = ;
('?is_ajax=1&act=save_ordernote&oid='+oid+'¬eVal='+noteVal,'',
saveOrderResponse, 'POST', '');}
function saveOrderResponse(result){
//alert(result);}
删除订单时删除关联的订单备注admin/
3、将订单状态设为等待客服确认
一、将订单状态修改为等待客服确认
/includes/lib_ ,以下
/* 修改订单状态为已付款 */
$sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_info') .
10
" 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']);
二、使付款后订单状态为等待客服确认
/ ,以下
$order['order_status'] = OS_CONFIRMED;
修改为
$order['order_status'] = OS_UNCONFIRMED;
三、修改后台订单状态为等待客服确认
/Admin/ ,以下代码
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/,以下代码
$_LANG['os'][OS_ UNCONFIRMED] = '未确认';
修改为:
$_LANG['os'][OS_UNCONFIRMED] = '等待客服确认';
11
五、修改用户订单表语言包
/languages/zh_cn/
$_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_ ,以下代码
">{$_name}{$sort_goods_name}
后面添加:
以下代码
onclick="(this, 'edit_goods_name',
{$_id})">{$_name|escape:html}
后面添加
onclick="_teshu(this, 'edit_goods_name_extends',
{$_id})">{$_name_extends|escape:html}
三、商品信息页添加商品扩展名
/admin/templates/goods_ , 以下代码
style="float:left;color:{$goods_name_color};" size="30" />
onclick="(this);">
style="margin-top:-1px;" />
name="goods_name_color" value="{$goods_name_color}" />
{html_options options=$_styles selected=$goods_name_style}
{$e_field}
后面添加
12
value="{$_name_extends|escape}" style="float:left;color:{$goods_name_color};"
size="30" />
四、修改语言包
/languages/zh_cn/admin/ ,以下代码
$_LANG['goods_name'] = '商品名称';
后面添加
$_LANG['goods_name_extends'] = '商品扩展名称';
以下代码
$_LANG['lab_goods_name'] = '商品名称:';
后面添加
$_LANG['lab_goods_name_extends'] = '商品扩展名称:';
五、修改商品添加文件
/admin/ ,以下代码
$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_ ,以下代码
$sql = "SELECT goods_id, goods_name,
修改为
$sql = "SELECT goods_id, goods_name, goods_name_extends ,
七、在前台商品页显示商品名称扩展
在当前使用的模版文件夹下的 ,以下代码
{$_style_name}
后面添加
{$_name_extends}
八、修改商品栏目页显示文件
/ ,以下代码
/* 获得商品列表 */
$sql = 'SELECT _id, _name,
后面添加
13
_name_extends,
以下代码
$arr[$row['goods_id']]['goods_brief'] = $row['goods_brief'];
后面添加
$arr[$row['goods_id']]['goods_name_extends'] = $row['goods_name_extends'];
九、在分类列表页显示商品名称扩展
在当前使用的模版文件夹下的library/goods_ ,以下代码
{$ark_img}">{$ark_img}
修改为
{$ark_img}
{$_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_ ,添加以下语句
$_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';
14
$_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_ ,以下代码
后面添加
四、加载页面session值
/include/ 页面尾端添加
$url_this="".$_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_,在文档后面添加以下代码
/**
* 格式化商品价格
*
* @access public
* @param float $price 商品价格
* @return string
*/
case 0:
$price = number_format($price, 2, '.', '');
break;
case 1: // 保留不为 0 的尾数
$price = preg_replace('/(.*)(.)([0-9]*?)0+$/', '123', 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: // 直接取整
15
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` VARCHAR( 10 ) NOT NULL ,
ADD `new_money` DECIMAL( 10, 2 ) NOT NULL
添加购物时的货币信息,/ 在以下代码
//分成功能关闭
$parent_id = 0;}
$order['parent_id'] = $parent_id;
后添加
$order['currency']=$_SESSION['currency'];
$order['new_money']=price_format_hs($order['order_amount']);
增加购物时的支付换算 /includes/lib_ 增加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+$/', '123', 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 位
16
$price = number_format($price, 2, '.', '');}
return $price;}
七、修改多货币支持的贝宝插件
/includes/modules/payment/
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_ ,以下代码
后面添加
以下代码
后面添加
九、输出货币类型和额度
/admin/ ,以下代码
/* 查询 */
$sql = "SELECT _id, _sn,
修改为:
/* 查询 */
$sql = "SELECT _id, _sn, cy,_money,
以下代码
function order_list(){
后面添加
$_SESSION["currency"] = 'USD';
17
6、使用Ajax更新商品页商品购买数量
sub_和add_和拷贝到模板目录下的images目录里
一、修改模版文件夹下的文件
添加js代码
在function changePrice(){
var attr = getSelectedAttributes(['ECS_FORMBUY']);
var qty = ['ECS_FORMBUY'].elements['number'].value;
('', 'act=price&id=' + goodsId + '&attr=' + attr + '&number=' + qty,
changePriceResponse, 'GET', 'JSON'); }
后面加入以下内容
function changePriceNum($m){
var attr = getSelectedAttributes(['ECS_FORMBUY']);
var qty = ['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;}
('', 'act=price&id=' + goodsId + '&attr=' + attr + '&number=' + qty,
changePriceResponse, 'GET', 'JSON');}
二、代码的更改
class="textInput_member" />
为如下所示:
onclick="changePriceNum('-');"/>
class="textInput_member" />
onclick="changePriceNum('+');"/>
7、使用Ajax更新购物车商品购买数量
js文件拷贝到模板目录下的js目录里
一、修改模版文件夹下的文件
1、添加js代码
后面加入以下内容
18
以上代码要放在上面,不然会出错
二、执行SQL语句
在`ecs_goods_gallery` 插入存放中图的字段 `mid_url`
ALTER TABLE `ecs_goods_gallery` ADD `mid_url` VARCHAR( 255 ) NOT NULL AFTER `img_url`
载入HTML代码实现放大功能,在当前使用的模板目录下的文件 ,以下代码
title="{$_style_name}"> 修改为: title="{$_style_name}"> title="{$_style_name}" alt="{$_name|escape:html}" /> title="{$_style_name}"> title="{$_style_name}" alt="{$_name|escape:html}" /> 三、添加底部相册切换功能 在当前使用的模板目录下的library/goods_文件 ,以下代码 title="{$_desc|escape:html}"> alt="{$_name}" class="autobg" />
修改为:
rel="useZoom: 'zoom1', smallImage: '{$_url}' "> alt="{$_name}" />
全局配置放大镜缩略图的大小,在ecs_shop_config执行SQL语句
INSERT INTO `ecs_shop_config` (`id`, `parent_id`, `code`, `type`, `store_range`, `store_dir`,
21
`value`, `sort_order`) VALUES (NULL, '3', 'mid_width', 'text', '', '', '348', '1'), (NULL, '3',
'mid_height', 'text', '', '', '453', '1');
配置缩略图的上传路径 修改/admin/picture_,以下代码
$sql = "SELECT _id, _id, _url,
后面添加,一共有两处
_url,
以下代码
while ($row = $GLOBALS['db']->fetchRow($res)){
$thumb_url = ''; $image = '';
后面添加
$mid_url = ''; /*二次开发*/
以下代码 /* 缩略图 */
if ($thumb){
整段if语句}
后面添加
/* 放大镜缩略图 二次开发start*/
if ($thumb){
if (empty($row['mid_url'])){
$dir = dirname(ROOT_PATH . $row['img_original']) . '/';}
四、配置自动生成缩略图
修改/admin/suppliers_ ,以下代码
/* 添加判断是否自动生成相册图片*/
if ($_CFG['auto_generate_gallery']){
if ($_CFG['thumb_width'] != 0 || $_CFG['thumb_height'] != 0){
$gallery_thumb = $image->make_thumb('../' . $img,
$GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);if ($gallery_thumb
=== false){
sys_msg($image->error_msg(), 1, array(), false);} } }
后面添加
/* 添加判断是否自动生成相册放大镜图片*/
if ($_CFG['auto_generate_gallery']){
if ($_CFG['mid_width'] != 0 || $_CFG['mid_height'] != 0){
$gallery_thumb = $image->make_mid('../' . $img, $GLOBALS['_CFG']['mid_width'],
$GLOBALS['_CFG']['mid_height']);
if ($gallery_mid === false){
sys_msg($image->error_msg(), 1, array(), false);} } }
创建图片的缩略图,指定缩略图的尺寸,修改/includes/cls_ ,以下代码
/**
* 创建图片的缩略图
*
* @access public
* @param string $img 原始图片的路径
* @param int $thumb_width 缩略图宽度
22
后面添加
/*放大镜*/
function make_mid($img, $mid_width = 0, $mid_height = 0, $path = '', $bgcolor=''){
$gd = $this->gd_version(); //获取 GD 版本。0 表示没有 GD 库,1 表示 GD 1.x,2 表示 GD
2.x
if ($gd == 0){$this->error_msg = $GLOBALS['_LANG']['missing_gd'];
return false;}
/* 检查缩略图宽度和高度是否合法 */
if ($mid_width == 0 && $mid_height == 0){
return str_replace(ROOT_PATH, '', str_replace('', '/', realpath($img)));}
/* 检查原始文件是否存在及获得原始文件的信息 */
$org_info = @getimagesize($img);
if (!$org_info){
$this->error_msg = sprintf($GLOBALS['_LANG']['missing_orgin_image'], $img);
$this->error_no = ERR_IMAGE_NOT_EXISTS;
return false;}
/* 原始图片以及缩略图的尺寸比例 */
$scale_org = $org_info[0] / $org_info[1];
/* 处理只有缩略图宽和高有一个为0的情况,这时背景和缩略图一样大 */
if ($mid_width == 0){
$mid_width = $mid_height * $scale_org;}
if ($mid_height == 0){
$mid_height = $mid_width / $scale_org;}
五、获得指定商品的相册缩略图
修改/ includes/lib_,以下代码
/**
* 获得指定商品的相册
*
* @access public
* @param integer $goods_id
* @return array
*/
整段funciton函数替换为
function get_goods_gallery($goods_id){
//二次开发start
$sql = 'SELECT img_id, img_url, mid_url,thumb_url, img_desc' .
' FROM ' . $GLOBALS['ecs']->table('goods_gallery') .
" WHERE goods_id = '$goods_id'
$GLOBALS['_CFG']['goods_gallery_number'];
//二次开发end
$row = $GLOBALS['db']->getAll($sql);
/* 格式化相册图片路径 */
23
LIMIT " .
9、产品页的颜色选择器功能开发
ALTER TABLE `ecs_goods_attr` ADD `attr_color` VARCHAR( 60 ) NOT NULL DEFAULT '+'
AFTER `attr_value`
一、函数的编写与替换
在admin/lib_中找到
function build_attr_html($cat_id, $goods_id = 0)函数
在函数中找到$html .= ‘’这一行,替换为
if ($val['attr_type'] == 1 && $val['attr_input_type'] == 1){
if(!empty($val[goods_attr_id])){
$html.='
style="background-color:'.$val[attr_color].';float:left;margin-left:2px;display:inline;"
id="font_color'.$val[goods_attr_id].'"
else{
$html .= '
onclick="ColorSelecter1(this,'a');">
style="margin-top:-1px;" />
name="attr_color_list[]" value="" />';} }
$html .= '
在admin/lib_中找到
function get_attr_list函数的$sql 变量在$sql = "SELECT _id, _name, _input_type,
_type, _values, _value, _price后面添加
, _color, _attr_id用以从数据库中获取颜色代码
在admin/js/文件
二、在其底部添加一个js函数,用以颜色的选择
ColorSelecter1 = function(sender, id){
var ColorSelecter1 = new Object();
//alert(());
if(){
if (y = "none")
y = "";}
else{
= Element("Div");
= "ColorSelectertBox";
var table = "
27
11、限时购功能开发
1、首先修改程序部分
打开includes/lib_
找到get_promote_goods()函数部分
在$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']),
$row['goods_name']);
复制代码
(注:这里一定要谨慎,一定要找准位置,很多同志都是绊倒在这里的,如果你没修改过这个文件的话,大概是在394行的位置,找错了就出不来了)
下面增加代码
/* 促销时间倒计时 */
$time = gmtime();
if ($time >= $row['promote_start_date'] && $time <= $row['promote_end_date']) {
$goods[$idx]['gmt_end_time'] = local_date('M d, Y H:i:s',$row['promote_end_date']); }
else{
$goods[$idx]['gmt_end_time'] = 0; }
二、部分代码的修改
将 library/recommend_
全部替换为下面代码:
{if $ion_ <= 3}
28
12、秒杀功能开发
一、执行sql语句
执行SQLDROP TABLE IF EXISTS `ecs_seckilling_log`;
CREATE TABLE IF NOT EXISTS `ecs_seckilling_log` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`seckilling_id` mediumint(8) unsigned NOT NULL,
`user_id` mediumint(8) unsigned NOT NULL,
`dateline` int(10) unsigned NOT NULL,
`usec` char(2) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`),
KEY `act_id` (`seckilling_id`)
) ENGINE=MyISAM DEFAULT CHARSET=GBK AUTO_INCREMENT=1 ;
adminincludesinc_
二、代码的添加修改与替换
搜索
$modules['03_promotion']['02_snatch_list'] = '?act=list';
上面添加一行
$modules['03_promotion']['01_seckilling_list'] = '?act=list';
adminincludesinc_
搜索
$purview['02_snatch_list'] = 'snatch_manage';
上面添加一行
$purview['01_seckilling_list'] = 'seckilling_manage';//秒杀
includesinc_
搜索
define('CART_EXCHANGE_GOODS', 4); // 积分商城
下面添加一行
define('CART_SECKILLING_GOODS', 9); // 秒杀
搜索
define('GAT_PACKAGE', 4); // 超值礼包
下面添加一行
define('GAT_SECKILLING', 9); // 秒杀
includeslib_
搜索
switch ($data['act_type']) {
下面添加case GAT_SECKILLING: //秒杀
29
$package[$data['act_id']]['act_name'] = $data['act_name'];
$package[$data['act_id']]['url'] = '#' . $data['act_id'];
$package[$data['act_id']]['time'] = sprintf($GLOBALS['_LANG']['promotion_time'],
includeslib_
搜索
/* 夺宝 */
elseif ('snatch' == $filename)
{
$page_title = $GLOBALS['_LANG']['snatch'] . '_' . $page_title;
$args = array('id' => '0');
$ur_here .= ' > '
$GLOBALS['_LANG']['snatch_list'] . '';
}下面添加
/* 秒杀 */
elseif ('seckilling' == $filename){
$page_title = $GLOBALS['_LANG']['seckilling'] . '_' . $page_title;
$args = array('id' => '0');
$ur_here .= ' > ' . '秒杀活动列表' . '';}
languageszh_
搜索
/* 促销管理 */
下面添加
$_LANG['seckilling_manage'] = '秒杀活动';
$_LANG['01_seckilling_list'] = '秒杀活动';
.
结论
到此,经过了将近半个学期的努力,终于做好了我的毕业设计,很开心,也很难过!开心的是我在大学时代的学习终于看到了成果,难过的是我们面临着毕业了,和我们生活在一起的好朋友,好同学们也将离开了,真的好不舍!人生就是这样嘛!有聚有散,天下没有不散的宴席。好了,言归正传,此次毕业设计的作品主要是Ecshop的二次开发,借助了dede的模板进行开发,其实,很多网络上的动态网页基本都是一个模式的,只是添加的功能,和界面的排版不同而已,dede的模板给了我们很多的帮助,借鉴得得模板解决了我们模板的设计问题,在dede的基础我,我为自己的设计添加了十二大功能,其中包括Ecshop版权的修改,这是第一步,也是必不可少的一步,因为这个是借助了别人的东西,就不可以完全相同,必须要有自己的风格,把Ecshop的全部标志去掉,包括后台的,和前台的lougou改成了自己的设计。我的这个设计主要是一个商场的模板设计,所以给后台开发了一个订单备注
30
功能,和将订单状态设为等待客服确认,自定义商品扩展名功能,多货币之间的转换,更新商品页面的购买数量,更新购物车商品的购买数量,商品的放大镜效果展示,产品组合销售功能,限时购物功能,和最后一个商品秒杀功能的开发,我觉得单单一个普通的商城,开发了这十二个功能是可以向网上推广了的。开发的道路的艰辛的,对我们来说,无论是理论还是实践上都是一个比较大幅度的提高,可以说是理论到实践的一个飞跃,我们还了解了软件开发的大体过程,在当今竞争激烈的社会中只有学到本领才能有立足之地,通过这次综合实验也使我们知道软件开发的辛苦,首先要有足够的耐心,要勇于面对密密麻麻的代码,无数遍的调试,和无数遍的修改,但是,当你调试成功时,你就会感觉到这次努力的意义,成功的喜悦。软件开发,还要注意借鉴,查看已有的例子代码,这样可以节省和多的时间,同时也实现了代码重用,此外,我知道了基础课的重要性,要学好一门编程语言,一定要动手,实践是最好的方法。
总的来说,对我个人而言,这次毕业时间的确是提高了我自己的动手能力,让我认识到了自己的不足,同时多亏了在开发网站的过程中得到了同学们的帮助,让我顺利的完成了毕业设计,在此我对你们衷心的表示感谢!
参考文献
《PHP项目开发案例全程实录》(第二版)
《PHP与SQL程序设计》(第四版)
致谢
时光冉冉,岁月如梭,转眼间大学三年的生活就过去了。有很多的不舍,三年的大学生活有喜有悲。闭上眼睛,可以想象出第一天来到清职的记忆,每一个场景真实可触。睁开眼睛,我们离开清职的最后一天有太多了不舍,每一刻时光都在心中留恋。
坦白的说,三年的学习我没太认真,往事已去,不再啰嗦,三年的大学生活还是蛮充实的,能有机会来到清职读书,当然首先要感谢的是的父母,是他们一直无私的供我读是,无论是小学还是现如今的大学,他们都在默默无闻的为我们贡献。也是他们让我学会了感恩,他们的恩情也很快的将会得到回报。在大学里,不得不感谢的就是我们的恩师了,他们敬业的奉献,使我们成才,细心的教导我们。在这里我由衷的说声“谢谢”。同学情是最深刻的,在学校里,每时每刻都和他们生活在一起,悲喜结合都与他们莫大的关系,平时有什么好事,三五结群的出来聚聚,不开心啦!我们互相的述说着自己的心事,我们一起更多的是快乐,和欢笑,甚至是疯狂。离开他们真的真的好不舍。有聚就有散,在怎么不舍也是无法挽留的,不单只是我,他们都有自己追寻的理想。感谢他们陪伴了我三年,三年相处的情谊将是我人生中无比珍贵的财富。
附
后台用户名admin
密码admin888
31
版权声明:本文标题:ECShop功能介绍 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1709972254a551754.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
预览SWF、Flash中心文件?Sigma File Manager的Space键是你的秘密武器
Sigma File Manager快速查看功能:Space键预览文件的终极操作指南 想要快速预览文件内容而无需打开多个应用程序?Sigma File Manager 的 快速查看功能让您只需按下
Windows 11新手:从入门到精通,安装.NET Framework 3.5全攻略
在安装某些软件时,会弹出以下界面,显示需要安装【 .NET Framework 3.5】。安装微软官方建议进行安装:Microsoft-在控制面板中启用 .NET Framework 3.5
轻松上手:解决.NET Framework 3.5安装失败的简单指南
电脑刚重装了Windows8.1系统,然后安装数据库的时候,却出现了这样的问题:您的电脑上的应用需要使用以下windows功能。 问题原因是:在安装系统的时候,NET Framework 4.5 包含在 Windows
一文看懂VMware vSphere Enterprise免费版:项目核心功能与应用技巧分享
VMware vSphere Enterprise 版本区别详解:项目核心功能场景 快速了解VMware vSphere不同版本差异,助您选择最适合企业的虚拟化方案。 项目介绍 VMware vSphere
快速解锁GTA5游戏秘籍,YimMenu辅助工具入门教程,助你轻松制胜!
如何快速掌握GTA5最强辅助工具YimMenu? 还在为GTA5在线模式中的各种困扰而烦恼吗?YimMenu这款完全免费的GTA5辅助工具能够帮你解决所有问题。作为一款开源项目,它不仅提供丰富的游戏增强功能,更重要的是内置了强
GTA5玩家必看:YimMenu配置技巧全解,助你成为游戏王者
YimMenu终极使用指南:GTA5最强辅助工具配置详解 想要在GTA5的世界中畅游无阻吗?YimMenu作为当前最强大的免费辅助工具,为你打开了通往无限可能的大门。这款开源项目不仅功能丰富,更重要的是拥有完善的安全保护机制,
GTA5游戏辅助YimMenu,轻松掌握,游戏技能大升级
如何快速掌握GTA5最强辅助工具YimMenu? 还在为GTA5在线模式中的各种困扰而烦恼吗?YimMenu这款完全免费的GTA5辅助工具能够帮你解决所有问题。作为一款开源项目,它不仅提供丰富的游戏增强功能,更重要的是内置了强
优化Windows右键菜单:提升日常操作的快捷与便利
Windows右键菜单优化指南:从混乱到高效的转变 一、破除认知误区:重新认识右键菜单 理解右键菜单的真实作用 右键菜单就像我们手机上的快捷操作中心,设计初衷是为了让常用功能触手可及。但随着软件不断安装,这个&quo
IE消失了?教你轻松修复并添加Flash功能,恢复播放SWF文件!
今天使用IE浏览器时,发现没法启动,程序目录去寻找才发现被卸载了(具体原因不知道)。网上恢复的一般方法是: 一、首先,打开Windows10系统,在开始菜单中找到“控制面板”选项,点击打开。 二、然后,在“控制面板”窗
电脑被2345资讯霸屏?用这招,立即让桌面恢复清新!
电脑弹出2345热点资讯的处理办法目录1、问题分析 简单分析了一下,旗下每款软件都内置的弹窗exe,而且命名非常隐藏,每款软件下都有,比如Helper_2345Explorer.exe、Helper
开启H3C路由器的Telnet功能,开启网络管理新篇章!
需求背景 通常设备会放在弱电箱里而我们的办公地点往往不在同一个地方,为了更加便捷的对设备进行管理我们通常会使用Telent&SSH服务。这边不再重述过多定义,您可以直接理解为他是可以实现利用网络对设备进行远程管理
GScreen VS SGGS:卫星影像拼接,谁更出色?
题外话,今天帮别人把Google earth上的截图给拼接下,此前并没有做过此项工作,考虑到Google earth上的影像图片是有坐标信息的,如果有专门针对GE影像下载的工具,那大范围的N张图片是完全可以实现自动拼接的。基于这个想法
安装PowerShell 3.0,为什么还是用着老版的.NET Framework?
Windows 8和 Windows Server 2012都带有 Windows PowerShell 3.0 Windows PowerShell 3.0使用的是 .netframework 4.0 执行 .ne
电脑技巧:笔记本电脑网络不显示wifi列表解决办法_笔记本电脑不显示wifi列表
目录我的笔记本电脑连接wifi时,结果wifi列表中不显示任何的网络信息,这是怎么回事?要如何解决? 答:笔记本电脑上wifi功能的相关配置有问题。例如wifi功能未启用、开启了飞行模式、.WLAN AutoCo
解决C盘空间不足的三种方案
C盘空间不足的原因系统文件和软件占用Windows操作系统的核心组件和关键文件通常位于C盘根目录及其子文件夹中,包括 系统文件、应用程序文件和用户数据。这些元素构成了系统正常运行的基础框
WPS安全避坑指南:为什么我建议你立即关闭路由器的PIN码功能
WPS安全避坑指南:为什么我建议你立即关闭路由器的PIN码功能 最近在帮一位朋友排查家里网络偶尔卡顿的问题,过程本身并不复杂,但排查中的一个发现却让我惊出一身冷汗。他的路由器,一台市面上主流品牌的新款型号,其WPS功能默认处于
电脑更新后无法共享打印机?这几招教你轻松解决_一键修复系统更新造成的打印机无法共享
电脑更新后无法共享打印机?这几招教你轻松解决 电脑系统也需要定期进行更新以保持其最佳性能。然而,有时候在电脑系统更新后,用户可能会遇到一些问题,其中之一就是无法共享打印机。这个问题可能会给用户带来很大的困扰,因为可能无法在办公
AxShockwaveFlashObjects 和 ShockwaveFlashObjects 这两个组件,但是Visual Studio无法找到它们_shockwave flash object
项目场景:提示:这里简述项目相关背景: AxShockwaveFlashObjects和 ShockwaveFlashObjects是与Adobe Flash Player相
Windows10、11设置护眼色失效问题_win10保护色设置后无效
有的时候发现设置了护眼色的windows系统,一旦电脑锁屏或者待机一段时间后,护眼绿色会消失,文档底色又变成了一片白色,需要重启才能恢复!后来,发现问题还是出在了设置的问题上,具体操作如下可以解决: 1、打开注册表
迅雷任务出错怎么办,如何解决迅雷任务出错_讯雷极速版任务出错
如果极速迅雷WIN10打不开或者闪退,到文件安装目录的program下,修改thunder.exe 为其他名字即可例如 迅雷.exe很多朋友在使用迅雷下载文件时提示“任务出错”这种情况。下面方法可能不适用于所有
发表评论