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 的 快速查看功能让您只需按下
Android新技能GET!屏幕亮度一键自定义
一、获取系统Settings 中的亮度二、修改APP界面屏幕亮度,不会影响其他APP三、修改系统Settings 中屏幕亮度,影响所有APP四、完整代码实现 一、获取系统Settings 中
安全存储:7-Zip帮你加密压缩文件
7-zip压缩软件大家都是用过吗?如果大家想要最大程度压缩文件体积,建议大家在压缩文件时选择7z格式,那么我们如果想要给7z压缩包设置加密,该如何操作?今天给大家分享7-zip加密、解密教程。包括忘记了压缩包密码该如何解决?
遇到NET Framework 3.5安装问题?这里有几个简单易行的解决方案!
说明 在Windows10中,当我们安装某些软件的时候会提示“你的电脑上的应用需要使用以下Windows功能:.NET Framework 3.5(包括.NET 2.0和3.0)”。这时就需要大家安装该功能。
VMware vSphere Enterprise版:项目核心与场景实操,助你高效推进业务
VMware vSphere Enterprise 版本区别详解:项目核心功能场景 快速了解VMware vSphere不同版本差异,助您选择最适合企业的虚拟化方案。 项目介绍 VMware vSphere
Unity Shader进阶:Amplify Shader Editor快速制作烟雾遮罩案例
Shader通过AmplifyShaderEditor进行实现,后面也会贴上shader代码 效果图 整体Shader Editor 具体节点介绍 贴图节点 常数节点 四则运算(+ -
VB6.0企业版DLL开发全攻略:兼容性难题一网打尽,采用2.06工具助阵
1.曾听大佬讲解,要用win2003 Server版本编译可以比较适应性强。 2.但是依然遇到了问题 3.选择为编译为P-代码就可以完美解决。 介绍: P-code 或伪代码,是介于 Basic 程
GTA5游戏辅助YimMenu,轻松掌握,游戏技能大升级
如何快速掌握GTA5最强辅助工具YimMenu? 还在为GTA5在线模式中的各种困扰而烦恼吗?YimMenu这款完全免费的GTA5辅助工具能够帮你解决所有问题。作为一款开源项目,它不仅提供丰富的游戏增强功能,更重要的是内置了强
从Win11到Win10:一键调整右键菜单,找回熟悉的操作体验
观前提示:本次修改涉及注册表,请提前备份原注册表,防止不正确的修改导致系统不稳定无法启动修改win11右键菜单、右键选项、还原win10右键菜单win11更新后,右键菜单总是没那么好用,每次想要的功能都被折
内容为王,流量为后盾:轻松生成二维码,多平台引流,数据驱动增长!
通过web系统实现淘宝营销引流,小说或者视频上传之后自动生成二维码,通过二维码分享之后引入微信或者扣扣加群,群满自动切换到下一个,以及数据统计分析和若干个小工具集成。 主要实现技术:1、大文件视频分割上传,实现多线
电脑高手的必备技能:快速启动程序快捷键揭秘
电脑“运行”中输入的命令及用法,许多朋友觉得电脑的“运行”框是个十分高大上的东西,大神们都善于在运行中输入各种代码,下面小编来跟大家说说的介绍.电脑运行快捷键是什么一、常规快捷键。这些是平常生活中使用比较
直接使用ESET NOD32 Antivirus 13.1.21.0,激活码不在话下!
ESET NOD32 防病毒软件以“轻、快、狠、准”而闻名,全球唯一通过26次VB100%测试的权威防病毒软件,高据众产品之榜首!ESET NOD32 安全杀毒软件设计了一个高效的内核,作为单独的、高度优化的引擎,提供统一的安全保护
steam报错118steam进不去商店118steam商店错误代码-118_steam118 csdn
在Steam平台持续推出新游戏、更新服务以及举办各种促销活动的热潮下,Steam已经成为全球数亿玩家不可或缺的游戏宝库。然而,近期部分用户在访问Steam商店时遭遇了steam报错118steam进不去商店118steam商店错误
如何编写Linux PCIe设备驱动器 之二_pcie ido linux 源码
功能(capability)集 功能(capability)APIs int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val);int pc
解决C盘空间不足的三种方案
C盘空间不足的原因系统文件和软件占用Windows操作系统的核心组件和关键文件通常位于C盘根目录及其子文件夹中,包括 系统文件、应用程序文件和用户数据。这些元素构成了系统正常运行的基础框
传统vsAI:修改192.168.0.1密码的10倍效率对比
快速体验打开 输入框内输入如下内容: 编写一个详细的效率对比测试方案:1)录制手动修改192.168.0.1密码的全流程视频 2)用快马生成自动化脚本 3)设计测试用例(单设备多设备场景) 4)收集耗时
台式电脑插入耳机没有声音或麦克风不管用_耳机插到台式机没声音
一、如何确定插孔对应功能 在电脑的音频接口上,不同颜色的插孔对应不同的功能,遵循 PC 99 音频标准: 1.常见音频插孔颜色及功能 颜色 功能
Windows10、11设置护眼色失效问题_win10保护色设置后无效
有的时候发现设置了护眼色的windows系统,一旦电脑锁屏或者待机一段时间后,护眼绿色会消失,文档底色又变成了一片白色,需要重启才能恢复!后来,发现问题还是出在了设置的问题上,具体操作如下可以解决: 1、打开注册表
ASP实现长文章用分页符来分页显示
长文章页用分页符来显示,想用ASP也实现这种功能,可发现只有根据字数进行分页的方法,但这种方法有一个BUG,就是如果你文章内容中如果有UBB代码,它很容易造成在之间进行分页,或者干脆就把[code]分解成了[co和de],这样文章显示就
Sigma File Manager快速查看功能:Space键预览文件的终极操作指南
Sigma File Manager快速查看功能:Space键预览文件的终极操作指南 想要快速预览文件内容而无需打开多个应用程序?Sigma File Manager 的 快速查看功能让您只需按下
发表评论