基于PHP技术的ECSHOP的二次开发
ecshop二次开发拍卖活动列表显示
ecshop的拍卖功能是ecshop提倡一大促销的主打功能,这个要求必须非常高,本程序为了调整ecshop列表页面活动倒计时和ecshop参与人数显示功能,给ecshop增色不少.1:auction.php的auction_list函数$sql = "SELECT a.*, IFNULL(g.goods_thumb, '') AS goods_thumb " ."FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS a " ."LEFT JOIN " . $GLOBALS['ecs']->table('goods') . " AS g ON a.goods_id = g.goods_id " ."WHERE a.act_type = '" . GAT_AUCTION . "' " ."AND a.start_time <= '$now' AND a.end_time >= '$now' AND a.is_finished < 2 ORDER BY a.act_id DESC";同时修改该函数function auction_count(){$now = gmtime();$sql = "SELECT COUNT(*) " ."FROM " . $GLOBALS['ecs']->table('goods_activity') ."WHERE act_type = '" . GAT_AUCTION . "' " ."AND start_time <= '$now' AND end_time >= '$now' AND is_finished < 2";return $GLOBALS['db']->getOne($sql);}2:admin\auction.php的function auction_list()$info = auction_info($row[act_id]);$arr['bid_user_count'] = $info['bid_user_count'];3:admin\templates\auction_list.htm<td align="right">{$auction.bid_user_count}</td>4:includes/lib_goods.phpfunction get_top10($cats = '')去掉if ($GLOBALS['_CFG']['use_storage'] == 1){$sql .= " AND g.goods_number > 0 ";}5:auction_list.dwt<select name="sort"><option value="start_time">开始时间</option><option value="end_time">结束时间</option></select>6:auction.php的list中增加以下$sort = isset($_REQUEST['sort'])&&($_REQUEST['sort'])?$_REQUEST['sort']:'act_ id';6:auction.phpfunction auction_list($size, $page,$sort = ''){if($sort){$sort_string = ' order by a.'.$sort." asc";}$auction_list = array();$auction_list['finished'] = $auction_list['finished'] = array();$now = gmtime();$sql = "SELECT a.*, IFNULL(g.goods_thumb, '') AS goods_thumb " . "FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS a " ."LEFT JOIN " . $GLOBALS['ecs']->table('goods') . " AS g ON a.goods_id = g.goods_id " ."WHERE a.act_type = '" . GAT_AUCTION . "' " ."AND a.start_time <= '$now' AND a.end_time >= '$now' AND a.is_finished < 2 $sort_string";8:auction.php的list$pager = get_pager('auction.php', array('act' => 'list','sort'=>$sort), $count, $page, $size);9:调用参与拍卖数量$info = auction_info($row[act_id]);$auction['bid_user_count'] = $info['bid_user_count'];10:auction_list.dwt参与人数:{$auction.bid_user_count}11:auction.php的auction_list()中增加倒计时$auction['auction_end_time'] =local_date('Y/m/d H:i', $auction['end_time']);$auction['act_id'] = $auction['act_id'];。
ecshop二次开发详细解答
在ECSHOP会员中心实现物流跟踪或包裹跟踪(非jquery版)前些日子,本站已经发表过一篇讲述“在ECSHOP会员中心集成物流跟踪或快递跟踪功能”的文章,不过以前那个方法用到了 jquery 。
今日公布的这个教程是不用JQUERY的方法。
下面是具体的修改教程:1)、首先下载物流跟踪插件 ecshop_express.rar,点击这里下载将它下载到你网站根目录的 plugins 子目录中,然后右键点击 ecshop_express.rar 文件,选择 "解压到 ecshop_express " ,解压后 ecshop_express 子目录下应该只存在两个文件: express.php 、snoopy.php2)、以下修改是以官方默认模板为例,其他模板本文不做讲解,请自行对照解决。
打开 /themes/default/user_transaction.dwt 文件将{$order.invoice_no}修改为<b id="shipping_name">{$order.shipping_name}</b> <bid="invoice_no">{$order.invoice_no|strip_tags}</b>接着,将<!--{if $order.to_buyer}-->修改为至此,大功告成,是不是比那个使用JQUERY的方法还简单。
到后台订单里发布一个运单号去看一下效果吧,下面是我在自己网站测试的效果在Ecshop商品详情页的本店售价中显示当前登录会员的等级价格问题描述:会员登录状态下,在ECSHOP商品详情页的本店售价中显示当前登录会员对应的等级价格,在未登录状态下,则还默认显示原来的本店售价。
解决方法:这个需要修改ECSHOP程序代码来实现。
其实也非常简单,只需要修改一行代码即可。
ecshop二次开发时的版权信息
ecshop二次开发时的版权信息前台部分:1:去掉头部TITLE部分的ECSHOP演示站 Powered by ecshop前者在后台商店设置 - 商店标题修改后者打开includes/lib_main.php$page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ECShop';改为$page_title = $GLOBALS['_CFG']['shop_title'];2.去掉版本信息“<meta name="Generator" content="ECSHOP v2.7.1" />”打开includes/cls_template删除以下部分/* 在头部加入版本信息 */$source = preg_replace('/<head>/i', "<head>\r\n<meta name=\"Generator\" content=\"" . APPNAME .' ' . VERSION . "\" />", $source);3.去掉友情链接部分在后台的友情链接管理里修改4.去掉底部的Powered by ecshop 270打开 js/common.js删除第244行:onload = function()再打开模板文件夹的 library/page_footer.lbi删除 {foreach from=$lang.p_y item=pv}{$pv}{/foreach}{$licensed}后台部分:1.去除两张图片admin/images/ecshop_logo.gifadmin/images/login.png2.右上角的“关于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'] = '版权所有© 2003-2010 石家庄一起走网络,并保留所有权利。
常见ecshop二次开发问题及解答
9:如何管理首页flash播放器
答:后台-> flash播放器管理->增加自定义,你就可以 上传和控制图片的位置
10:如何修 改首页"精 品推荐"栏 目的more 小图片
回答:模板文件中library/recommend_best.lbi中, <divclass="more"><ahref="../search.php?intro=be st"><imgsrc="images/more.gif"/></a></div>
缀
回答:修改data/config.php 下的$prefix="ecs_";将ecs_ 修改成你需要的前缀.其次,在 数据库中,修改表名比如 ecs_goods修改为 "xxx_goods";
20:如何修 改ecshop 导航栏目名
称
回答:后台 -> 系统设置 -> 自 定义导航栏-> 编辑 -> 修改 导航栏名称
回答:模板文件中,打开goods.dwt,删除 <strong>{$lang.goods_click_count}: </strong>{$goods.click_count}
首页模板在哪个文件,头部模板,底部模板个什么文件名称
回答:首页模板在为index.dwt,头部模板在 librar y/page_header.lbi, 底部文件在 librar y/page_footer.lbi
3:如何修改 首页标题 "Powered by ECShop"
回答:includes/lib_main.php,找到$page_title =$GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered byECShop';修改成$page_title = $ G LO B A L S [ ' _ C F G ' ] [ 's h o p _ t i t l e' ] 就 可 以 了 。
ecshop二次开发手册
ecshop二次开发手册【基本结构】【基本熟悉】前言:ECSHOP是一套完整的网络商店解决方案,包括前台的商品展示、购物流程和强大易用的后台管理。
由于ecshop简单易用,使用者几乎可以在3几分钟简单的设置一下就可以拥有一个网上商店系统,所以很多的B2C站点都选择了使用ECShop网上商店系统,但是有时候我们需要做一些ecshop本来没有的功能或者前端展示,这时候就需要我们自己去进行对ecshop的二次开发了。
一、ecshop系统功能二次开发ecshop的代码结构非常易懂,只有有一点php基础都可以在原有的程序基础上进行修改,或功能插件的开发。
ecshop中的一些公用函数都会放在includes文件夹里,而这些公用函数几乎我们都可以用来参照一下就能轻松做出我们想要的其他功能了。
我们要对ecshop进行二次开发,简单来说其实就是对数据库的读写操作,所以只要我们读懂ecshop的数据库操作类,接下来的实现就很轻松了。
ecshop的数据库操作类是很强大的,一些常用的函数如下: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二次开发教程如上所示1:如何统计ecshop商品在订单中出现的次数回答:$count=$db->getOne("select sum(goods_number)from".$ecs->table('order_goods')."where goods_id='$goods[goods_id]'");2:如何用js去验证手机号码.回答:var reg=/^[1]([3][0-9]{1}|50|53|59|58|56|86|80|89|87|88|85|86|55|51|52|57)[0-9]{8}$/; 3:ecshop中如何取得每个月的1号时间?回答:local_mktime(0,0,0,date("m"),0,date("Y"));使用ecshop的local_mktime函数. 4:ecshop如何直接关闭窗口而不弹出提示回答:5:如何统计ecshop某商品下被审核过的评论数量。
回答:$ccount=$db->getOne("select count(*)cc from".$ecs->table('comment')."where id_value='$goods_id'and comment_type='0'and status='1'and parent_id='0'");6:ecshop中js如何将时间格式互转回答:date1=new Date();var b=Date.UTC(date1.getYear(),date1.getMonth()+1,date1.getDate(),0,0,0)time1=frm.elements['best_time'].value;y=time1.substring(0,4);m=time1.substring(5,7);d=time1.substring(8,10);var b2=Date.UTC(y,m,d,0,0,0)8:如何解析ecshop flash的xml回答:$str=@file_get_contents("data/flash_data.xml");if($str){preg_match_all("/item_url=\"(.*?)\"/",$str,$url);preg_match_all("/text=\"(.*?)\"/",$str,$text);preg_match_all("/link=\"(.*?)\"/",$str,$link);$ar_flash=array();if(sizeof($url[1])){for($i=0;$i<sizeof($url[1]);$i++){$ar_flash[$i]['url']=$url[1][$i];$ar_flash[$i]['text']=$text[1][$i];$ar_flash[$i]['link']=$link[1][$i];}$smarty->assign('ar_flash',$ar_flash);}}9:ecshop中如何正则提取中文回答:preg_match("/[".chr(0xa1)."-".chr(0xff)."]+/",ecs_iconv("UTF-8","GBK",$v['brand_name']),$cn); 10:ecshop如何取得订单中所属区域$p=$GLOBALS['db']->getOne("select region_name from".$GLOBALS['ecs']->table('region')." where region_id='".$re1['province']."'");$c=$GLOBALS['db']->getOne("select region_name from".$GLOBALS['ecs']->table('region')." where region_id='".$re1['city']."'");$d=$GLOBALS['db']->getOne("select region_name from".$GLOBALS['ecs']->table('region')." where region_id='".$re1['district']."'");11:ecshop中如何分别提取中文和英文回答:utf下面$pregstr="/[\x{4e00}-\x{9fa5}]+/u";preg_match($pregstr,$v['brand_name'],$ch);gbk下面$strtest=“yyg中文字符yyg”;$pregstr="/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])+/i";if(preg_match($pregstr,$strtest,$matchArray)){echo$matchArray[0];}。
Ecshop二次开发
Ecshop二次开发,增加用户订单编辑功能/post/74.htmlEcshop是一款开源免费的网上商店系统。
功能很强大,但是也有很多的不足,不过幸好该系统是开源的,可以自己修改扩展进行ecshop二次开发。
呵呵,下面就介绍一下怎么我扩展用户的订单编辑功能。
第一步:准备模版文件。
修改模板文件中的user_transaction.dwt。
在文件中增加一段用户显示用户编辑订单的界面模版,其实该模版可以从该文件中的详细订单显示界面模板修改过来,只要截取商品列表和费用总计部分就好!1、搜索”<!– {if $allow_to_cart} –>”,在该代码的前面加入:<!– {if $allow_to_modify} –><a href="user.php?act=modify&order_id={$order.order_id}">编辑订单</a><!– {/if} –>2、搜索“<!– #BeginLibraryItem "/library/help.lbi" –>”,在其之前加入:<!–修改订单–><!–{if $action eq "modify"} –>{insert_scripts files=‟transport.js‟}<div class="titles">修改订单</div><div class="listbox"><form action="user.php" name="list" method="post"><table width="100%" id="orderlist2"><tr><th>{$lang.goods_name}</th><th>{$lang.goods_attr}</th><th align="right">{$lang.goods_price}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –></th><th width="60px;" style="text-align:center">{$lang.number}</th><th width="60px;" class="rightborder">{$lang.subtotal}</th><th width="60px;" class="rightborder">操作</th></tr><!– {foreach from=$goods_list item=goods} –><tr><td><a href="goods.php?id={$goods.goods_id}" target="_blank">{$goods.goods_name}</a><!– {if $goods.parent_id > 0} –><span style="color:#FF0000">({$lang.accessories})</span><!– {elseif $goods.is_gift} –><span style="color:#FF0000">({$rgess})</span><!– {/if} –></td><td>{$goods.goods_attr|nl2br}</td><!–<td>{$goods.market_price}</td>–><td >{$goods.goods_price}</td><td ><input type=text name=good_number[{$goods.goods_id}] size=5 value="{$goods.goods_number}" style="text-align:center"></td><td class="rightborder">{$goods.subtotal}</td><td style="text-align:center;line-height:150%"><a href="javascript:if (confirm(‟你确定要删除该商品吗?‟)) location.href=‟user.php?act=modify&do=del&oid={$order.order_id}&bid={$goods.goods_id}‟; ">{$lang.drop}</a></td></tr><!– {/foreach} –><tr><td colspan="8" style="border-top:1px dotted #DADADA;text-align:right;">{$lang.shopping_money}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –>: {$order.formated_goods_amount}</td></tr></table><table width="716" border="0" cellspacing="0" cellpadding="0"><tr><td width="300" height="50" align="center" valign="bottom"><input type="image" src="images/edit_button.gif" width="100" height="40" border="0" /></td><td width="416"> </td></tr></table><input type="hidden" name="do" value="update"><input type="hidden" name="act" value="modify"><input type="hidden" name="oid" value="{$order.order_id}"></form></div><div class="titles">费用总计</div><div class="listbox"><table width="100%" border="0" align="center" cellpadding="4" cellspacing="2"><tr><td align="right">{$lang.goods_all_price}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –>: {$order.formated_goods_amount}<!– {if $order.discount gt 0} 折扣–>- {$lang.discount}: {$order.formated_discount}<!– {/if} –><!– {if $order.tax gt 0} –>+ {$lang.tax}: {$order.formated_tax}<!– {/if} –><!– {if $order.shipping_fee > 0} –>+ {$lang.shipping_fee}: {$order.formated_shipping_fee}<!– {/if} –><!– {if $order.insure_fee > 0} –>+ {$lang.insure_fee}: {$order.formated_insure_fee}<!– {/if} –><!– {if $order.pay_fee > 0} –>+ {$lang.pay_fee}: {$order.formated_pay_fee}<!– {/if} –><!– {if $order.pack_fee > 0} –>+ {$lang.pack_fee}: {$order.formated_pack_fee}<!– {/if} –><!– {if $order.card_fee > 0} –>+ {$lang.card_fee}: {$order.formated_card_fee}<!– {/if} –></td></tr><tr><td align="right"><!– {if $order.money_paid > 0} –>- {$lang.order_money_paid}: {$order.formated_money_paid}<!– {/if} –><!– {if $order.surplus > 0} –>- {$e_surplus}: {$order.formated_surplus}<!– {/if} –><!– {if $order.integral_money > 0} –>- {$e_integral}: {$order.formated_integral_money}<!– {/if} –><!– {if $order.bonus > 0} –>- {$e_bonus}: {$order.formated_bonus}<!– {/if} –></td></tr><tr><td align="right" style="border-top: 1px dotted #DADADA">{$lang.order_amount}: {$order.formated_order_amount}<!–{if $order.extension_code eq "group_buy"} –><br />{$lang.notice_gb_order_amount}<!– {/if} –></td></tr><!– {if $allow_edit_surplus} 如果可以编辑使用余额数–><tr><td align="right" style="border-top: 1px dotted #DADADA"><form action="user.php" method="post" name="formFee" id="formFee">{$e_more_surplus}:<input name="surplus" type="text" size="8" value="0" />{$max_surplus}<input type="submit" name="Submit" value="{$lang.button_submit}" /><input type="hidden" name="act" value="act_edit_surplus" /><input type="hidden" name="order_id" value="{$smarty.get.order_id}" /> </form></td></tr>{/if}</table></div><!–{/if}–><!–#修改订单–>第二步、编辑user.php文件1、在$ui_arr 中加入"modify“.* 显示页面的action列表*/$ui_arr = array(‟register‟, …login‟, …profile‟, …order_list‟, …modify…,‟order_detail‟, …address_list‟, …collection_list‟,'message_list‟, …tag_list‟, …get_password‟, …reset_password‟, …booking_list‟, …add_booking‟, …account_raply‟,'account_deposit‟, …account_log‟, …account_detail‟, …act_account‟, …pay‟, …default‟, …bonus‟, …group_buy‟, …group_buy_detail‟, …affiliate‟, …comment_list‟,'validate_email‟,'track_packages‟, …transform_points‟);2、在下面所示代码中,增加$smarty->assign(‟allow_to_modify‟,1);/* 未发货,未付款时允许更换支付方式和修改订单*/if ($order['order_amount'] > 0 && $order['pay_status'] == PS_UNPAYED && $order['shipping_status'] == SS_UNSHIPPED){$payment_list = available_payment_list(false, 0, true);$smarty->assign(‟allow_to_modify‟,1);3、在“//删除订单中的商品”的方面,加入下载代码:/*修改订单*/elseif($action==‟modify‟){function multiArraySearch($needle, $haystack){$value = false;$x = 0;foreach($haystack as $temp){// print_r($temp);$search = array_search($needle, $temp);if (strlen($search) > 0 && $search >= 0){$value[0] = $x;//$value[1] = $search;}$x++;}return $value;}include_once(ROOT_PATH . …includes/lib_transaction.php‟);include_once(ROOT_PATH . …includes/lib_payment.php‟);include_once(ROOT_PATH . …includes/lib_order.php‟);include_once(ROOT_PATH . …includes/lib_clips.php‟);if($_REQUEST['do']=="del"){$oid=$_REQUEST['oid'];$gid=$_REQUEST['bid'];$sql="select goods_price,goods_number from ".$ecs->table("order_goods")." where goods_id=$gid";$result=$db->getrow($sql);$order = get_order_detail($oid, $user_id);//取得订单$sql="delete from ".$ecs->table("order_goods")." where goods_id=$gid and order_id=$oid";//删除商品$db->query($sql);$sql="select configure from ".$ecs->table("shipping_area")." where shipping_id=".$order['shipping_id'];$shipping_fee=$db->getrow($sql);$tempa=unserialize($shipping_fee['configure']);$shipping=multiArraySearch("free_money",$tempa);$free_money=$tempa[$shipping[0]]['value'];//找出免运费的额度$market_price=$order['goods_amount']-$result['goods_price']*$result['goods_number'];$inv_id=array_search($order['inv_type'],$GLOBALS['_CFG']['invoice_type']['type']);$rate= floatval($GLOBALS['_CFG']['invoice_type']['rate'][$inv_id])/100;$tax=$order['tax']-($result['goods_price']*$result['goods_number'])*$rate;$addpay_fee=pay_fee($order['pay_id'],$result['goods_price']*$result['goods_number']);//删除的支付费用$pay_fee=$order['pay_fee']-$addpay_fee;$order_amount=$market_price-$discount+$tax+$pay_fee;$shipping_fee=$order['shipping_fee'];if($market_price>=$free_money){$order_amount=$order_amount-$shipping_fee;$shipping_fee="0.00";}else{if($shipping_fee<=0){$shipping=multiArraySearch("basic_fee",$tempa);$shipping_fee=$tempa[$shipping[0]]['value'];//找出基本运费的$order_amount=$order_amount+$shipping_fee;}}//更新订单信息$sql="update ".$ecs->table("order_info")." set goods_amount=‟".$market_price."‟,discount=‟".$discount."‟,shipping_fee=‟".$shipping_fee."‟,tax=‟".$tax."‟ ,pay_fee=‟".$pay_fee."‟,order_amount=‟".$order_amount."‟ where order_id=$oid";$db->query($sql);$order = get_order_detail($oid, $user_id);//再一次查检订单参数if($order['goods_amount']<=0){$sql="delete from ".$ecs->table("order_info")." where order_id=$oid";$db->query($sql);ecs_header("Location: user.php?act=order_list");exit();}ecs_header("Location: user.php?act=modify&order_id=".$oid);exit();}if($_REQUEST['do']=="update"){//更新商品数量$oid=$_REQUEST['oid'];$gid=$_REQUEST['bid'];$nums=$_REQUEST['good_number'];foreach($nums as $gid=>$num){$sql="select goods_price,goods_number from ".$ecs->table("order_goods")." where goods_id=$gid";$result=$db->getrow($sql);$order = get_order_detail($oid, $user_id);//取得订单$sql_storage = "SELECT goods_name,goods_number FROM " .$ecs->table(‟goods‟). " WHERE goods_id = $gid";$storage_num = $db->getRow($sql_storage);//库存if($result['goods_number']==$num){continue;}elseif($num<=0){show_message("对不起,您修改的商品数量不能为0,或小于0!", "返回", …user.php?act=modify&order_id=‟.$oid, …error‟);exit();}elseif ($num>$storage_num['goods_number']){show_message("对不起,您修改的商品数量不能大于该商品:".$storage_num['goods_name'].",库存数:".$storage_num['goods_number']."!", "返回", …user.php?act=modify&order_id=‟.$oid, …error‟);exit();}$addnum=$num-$result['goods_number'];$sql="update ".$ecs->table("order_goods")." set goods_number=".$num." where goods_id=$gid and order_id=$oid";//添加商品$db->query($sql);$sql="select configure from ".$ecs->table("shipping_area")." where shipping_id=".$order['shipping_id'];$shipping_fee=$db->getrow($sql);$tempa=unserialize($shipping_fee['configure']);$shipping=multiArraySearch("free_money",$tempa);$free_money=$tempa[$shipping[0]]['value'];//找出免运费的额度$market_price=$order['goods_amount']+$result['goods_price']*$addnum; //修改后商品总价格$inv_id=array_search($order['inv_type'],$GLOBALS['_CFG']['invoice_type']['type']);$rate=floatval($GLOBALS['_CFG']['invoice_type']['rate'][$inv_id])/100;$tax=$order['tax']+($result['goods_price']*$addnum)*$rate;//修改后税额$addpay_fee=pay_fee($order['pay_id'],$result['goods_price']*$addnum- $school_dis);//支付费用$pay_fee=$order['pay_fee']+$addpay_fee;$order_amount=$order['order_amount']+($result['goods_price']*$addnum)-$school_dis+($result[' goods_price']*$addnum)*$rate+$addpay_fee;//修改后订单总额$shipping_fee=$order['shipping_fee'];if($market_price>=$free_money){$order_amount=$order_amount-$shipping_fee;$shipping_fee="0.00";}else{if($shipping_fee<=0){$shipping=multiArraySearch("basic_fee",$tempa);$shipping_fee=$tempa[$shipping[0]]['value'];//找出基本运费的$order_amount=$order_amount+$shipping_fee;}}//更新订单信息$sql="update ".$ecs->table("order_info")." set goods_amount=‟".$market_price."‟,discount=‟".$discount."‟,shipping_fee=‟".$shipping_fee."‟,tax=‟".$tax."‟,pay_fee=‟".$pay_fee."‟ ,order_amount=‟".$order_amount."‟ where order_id=$oid";$db->query($sql);}$order = get_order_detail($oid, $user_id);//再一次查检订单参数if($order['goods_amount']<=0){$sql="delete from ".$ecs->table("order_info")." where order_id=$oid";$db->query($sql);ecs_header("Location: user.php?act=order_list");exit();}ecs_header("Location: user.php?act=order_detail&order_id=".$oid);exit();}$order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0;$order = get_order_detail($order_id, $user_id);/* 订单商品*/$goods_list = order_goods($order_id);foreach ($goods_list AS $key => $value){$goods_list[$key]['market_price'] = price_format($value['market_price'], false);$goods_list[$key]['goods_price'] = price_format($value['goods_price'], false);$goods_list[$key]['subtotal'] = price_format($value['subtotal'], false);}$smarty->assign(‟order‟, $order);$smarty->assign(‟goods_list‟, $goods_list);$smarty->display(‟user_transaction.dwt‟);}。
ecshop二次开发
ecshop订单操作的状态对应的值ecshop电子商务系统中,ECSHOP的订单有很多的状态。
这些状态,是维持和保证ECSHOP后台操作订单状态转换的依据。
order_status = 0表示订单未确认order_status = 1表示订单已经确认order_status = 2表示订单已经取消pay_status = 0表示未付款pay_status = 2表示已付款shipping_status = 3表示已配货shipping_status = 1表示已发货shipping_status = 2表示已收货总结以上ecshop订单的状态,方便开发人员总结开发操作。
、Ecshop 前台显示已售出的数量category.php下面的category_get_goods函数中foreach循环添加$arr[$row['goods_id']]['count'] = selled_count($row['goods_id']);文件的最后部分添加函数function selled_count($goods_id){$sql= "select sum(goods_number) as count from ".$GLOBALS['ecs']->table('order_goods')."where goods_id ='".$goods_id."'";$res = $GLOBALS['db']->getOne($sql);if($res>0){return $res;}else{return('0');}模板goods_list.lbi<a href="javascript:;" id="compareLink"html"}','{$goods.type}')" class="f6">{$pare}</a> 下添加销售量:{$goods.count}如何轻松实现ecshop不同商品调用不同模板我们这里就按照分类来调用模板假如有4个分类CAT_ID 为 1 2 3 4对应的模板 goods.dwt goods1.dwt goods2.dwt goods3.dwt那麽在 goods.php中找到$smarty->display('goods.dwt', $cache_id);switch ($goods['cat_id']){case 1:$smarty->display('goods.dwt', $cache_id);break;case 2:$smarty->display('goods1.dwt', $cache_id);break;case 3:$smarty->display('goods2.dwt', $cache_id);break;case 4:$smarty->display('goods3.dwt', $cache_id);break;}如何将ecshop会员注册页的E-MAIL由必填项改为非必填项看到论坛里有不少朋友发帖询问解决办法,故共享之。
ecshop二次开发2
ecshop订单操作的状态对应的值ecshop电子商务系统中,ECSHOP的订单有很多的状态。
这些状态,是维持和保证ECSHOP后台操作订单状态转换的依据。
order_status=0表示订单未确认order_status=1表示订单已经确认order_status=2表示订单已经取消pay_status=0表示未付款pay_status=2表示已付款shipping_status=3表示已配货shipping_status=1表示已发货shipping_status=2表示已收货总结以上ecshop订单的状态,方便开发人员总结开发操作。
、Ecshop前台显示已售出的数量category.php下面的category_get_goods函数中foreach循环添加$arr[$row['goods_id']]['count']=selled_count($row['goods_id']);文件的最后部分添加函数function selled_count($goods_id){$sql="select sum(goods_number)as count from ".$GLOBALS['ecs']->table('order_goods')."where goods_id='".$goods_id."'";$res=$GLOBALS['db']->getOne($sql);if($res>0){return$res;}else{return('0');}}模板goods_list.lbi<a href="javascript:;"id="compareLink"html"}','{$goods.type}')"class="f6">{$pare}</a>下添加销售量:{$goods.count}如何轻松实现ecshop不同商品调用不同模板我们这里就按照分类来调用模板假如有4个分类CAT_ID为1234对应的模板goods.dwt goods1.dwt goods2.dwt goods3.dwt那麽在goods.php中找到$smarty->display('goods.dwt',$cache_id);switch($goods['cat_id']){case1:$smarty->display('goods.dwt',$cache_id);break;case2:$smarty->display('goods1.dwt',$cache_id);break;case3:$smarty->display('goods2.dwt',$cache_id);break;case4:$smarty->display('goods3.dwt',$cache_id);break;}如何将ecshop会员注册页的E-MAIL由必填项改为非必填项看到论坛里有不少朋友发帖询问解决办法,故共享之。
ECShop的二次开发
ECShop的二次开发目录ECShop的二次开发 (1)目录 (1)一phpStudy的安装与环境的搭建(本地php环境、mysql数据库环境、appache服务器) (2)二、安装ecshop (4)三、ecshop的二次开发 (6)一phpStudy的安装与环境的搭建(本地php环境、mysql数据库环境、appache服务器)1.如下图,可以看到该安装包集成了最新的apache 、php、mysql、phpmyadmin等多种开发环境。
直接点击“下一步”进行安装。
2.在此可以选择更换安装程序的路径,确定后点击“下一步”。
3.在此可以选择网站程序的路径,即你的网站php代码所在的目录。
确定后点击“下一步”。
4.在此可以看到该phpstudy安装包的组件,你可以在此进行配置。
缺省情况下不用做修改,点击“下一步”。
5.后面的步骤也不需配置,直接点“下一步”。
当你看到下图界面时,表示你也完成phpstudy的安装,点击“完成”介绍安装过程。
6.安装完成后,启动phpstudy,phpstudy程序的主界面如下图。
在此可以控制Apache服务器和Mysql服务器的启停。
同时也有Mysql管理器菜单和其它选项菜单对系统进行一些配置。
二、安装ecshop7.登录网址免费下载ecshop网店系统最新版本8.将下载好的压缩包解压后得到三个文件夹9.把upload这个文件夹里面的内容拷贝到php运行环境的根目录(要安装多个ecshop时直接把upload拷贝到php环境的根目录就行,upload文件夹可以被改成自己喜欢的名字)。
10.打开浏览器输入localhost(或者localhost/upload安装多个),回车,进入安装欢迎界面。
11.下一步,进入环境检测,全包所有模块可写。
、12.下一步,填写数据库配置和用户信息。
若要安装测试数据注意勾选相应选项。
13.安装完成下图为前台页面三、ecshop的二次开发1.进入管理后台,如下图所示。
ecshop功能二次开发之后台管理增加成本价和毛利润统计功能
ecshop功能二次开发之后台管理增加成本价和毛利润统计功能ecshop功能二次开发之后台管理增加成本价和毛利润统计功能在做ecshop二次开发的时候增加一个财务统计的功能!首先在订单中的商品信息【编辑】页面中,修改成本价。
也可以在添加商品时添加成本的如果不做手工修改,则使用默认的商品成本价(在商品信息里编辑的成本价格)。
我用的版本是ecsh.2第一步:修改数据库中的商品表ecs_goods和订单商品表ecs_order_goods,添加成本价字段cost_price把SQL语句列出来:alter table `ecs_goods` add column `cost_price` decimal (10,2) UNSIGNED DEFAULT ' NOT NULL after `promote_price`alter table `ecs_order_goods` add column `cost_price` decimal (10,2) DEFAULT ' NOT NULL after `market_price`这里是加在了字段promote_price 和market_price后面第二步.增加语言包,需要修改languages\zh_cn\admin\goods.php再最后添加 /* 新增-成本价 */$_LANG['lab_cost_price'] = '成本价:';$_LANG['notice_cost_price'] = '该商品进货价格(成本价,在商品添加时设置,也可以在商品编辑里面修改。
).';第三步.修改admin/goods.php 把成本价格插入到数据库在两个(有两个地方需要修改)'promote_price' => 0,后新增一行添加'cost_price' => 0,再在$shop_price = !empty($_POST['shop_price']) ? $_POST['shop_price'] : 0;后添加$cost_price = !empty($_POST['cost_price']) ? $_POST['cost_price'] : 0;将/* 入库 */if ($is_insert){。
ecshop二次开发,常用功能开发
ecshop二次开发,常用功能开发ecshop二次开发,常用功能开发1、ECSHOP 搜索智能提示(即联想功能)2、购物车动态更新,数量左右有+ - 点击即可实时改变价格,购买商品“加入购物车”,弹出特效窗口,购物车属性,加减号3、信任登陆:QQ、新浪微博、淘宝/支付宝等合作登录功能插件含后台设置功能(可选)4、ecshop自定义URL/链接,支持无限级目录,对提高SEO排名很有帮助、/thread-__-1-1.html5、Ecshop自动生成购买记录和评论插件6、物流跟综7、资讯站自动内链功能,在后台设置关键词,资讯站相关关键词可点到商品或分类8、简化购物流程购物流程整合成单页面运费无刷新变化所有操作在单页面完成,简化了购物流程,提高成交,将购物车、填写收货地址、物流方式和支付方式集成在一个页面上完成,9、ecshop 网站商品图片分步加载,(图片太多,加载会很慢,页面在第一屏就加载第一屏,拖动后自动加载),类似于京东,趣玩网的图片预加载..ecshop二次开发,常用功能开发。
ecshop二次开发,常用功能开发10、ECSHOP CPS 广告联盟插件,11、促销期内,每个用户最多只允许购买N 件。
不论你是昨天买的,还是今天买的,还是明天买的,也不论你下多少订单,只要是在促销期内,购买数量加在一起不能超过N 件。
这个数字N 可以在后台设置。
例如对商品A做促销活动,规定在2022年-01-01 至2022年-02-01 期间,每个用户最多只能购买2件,在这个时间段之前或在这个时间段之后购买的话,不做任何限制。
12、限时抢购(限时抢拍)、团购(两种方式:普通团购、满多少团购价减多少)、秒杀、买就送、倒计时功能13、ECSHOP优惠套餐插件,仿趣玩网,支持多套餐,支持勾选ecshop二次开发,常用功能开发14、实现用户名或Email都能登陆15、未注册等提示性跳转,以浮动层表现15、其它,如浮动返回到顶部、浮动客服等ecshop二次开发,常用功能开发怎样把ECSHOP商城系统中的相对地址变成带域名的绝对地址?答:我们一般所说的绝对地址(也有朋友称其为:完整地址)是页前台查看源文件时,在源文件中都所能看到的带域名的完整URL形式,比如:“a href=“/sitemap.xml "__/a”修改说明:这样修改的好处:也许很多朋友都非常想把以mon.php这个文件把return $uri;修改为return 'http:// /'.$uri;为什么我的ECSHOP首页和商品列表页中的商品缩略图很模糊,我应该怎么做,图片才会清晰呢?答:经常看到论坛里有人反映说首页或列表页的缩略图的质量不高,比较模糊......原因是因为ECSHOP生成缩略图时,用到的函数imagejpeg() 没有设置质量参数。
Ecshop系统框架分析之二次开发要点
Ecshop系统框架分析之二次开发要点专业的网站策划队伍、专业的美工设计师。
丰富的制作经验和高超的创意水平,可根据您的企业的行业类型和产品特点设计出更加商业化、国际化的网站。
精益求精的网页制作人员、严谨的应用程序开发人员、尽善尽美的售后服务人员。
这一切,是我们为您提供专业网站建设服务前提。
进入互联网时代以来,建设网站、网站推广、网络营销、电子商务,成为众多中小企业寻求快速发展,建立竞争优势的一个重要途径。
品界科技提供网页制作、网页优化、网站推广一条龙服务。
我们在您的网站建设之初即提供网站优化服务,我们按搜索引擎的搜索习惯来设计建设您的网站,使您的网站在建设完成后即完成了网站优化任务,大大提升您网站在搜索引擎中的竞争优势。
首页 >> 网站建设 >> Ecshop系统框架分析之二次开发要点Ecshop系统框架分析之二次开发要点品界做网站建设时商城做得多了,经常用到ECSHOP程序,毕竟是免费开源的,很多地方需要进行二次开发才能符合客户的要求,现在把一些二次开发必须要先弄懂的要点总结如下(内容为转载整理)。
一、整体框架结构:整个系统是层结构,有数据层及外观层组成。
比如,我们index.php是外观层(和用户打交道的层),include目录下的lib_goods.php是数据层(跟数据库打交道的)。
拿推荐产品来说吧,在index.php是对数据层get_recommend_goods('new')函数的调用。
二、重要目录:首先大多前台程序是在根目录下的,对应的英文就是对应的显示页面admin:是我们后台的文件夹,后台的模板文件是在下一层的templates里。
这里我强调几个后台文件,首先需要了解init.php文件,这个是对后台session的访问权限及调用模板的路径等功能的设置;第二个文件是inc_menu.php这是定义功能菜单文件,看到论坛有人要把后台一些功能去掉,你就可以改这文件把里面的一些模块删了即可。
Ecshop二次开发之自定义库文件和模板数据调用实例-电脑资料
Ecshop二次开发之自定义库文件和模板数据调用实例-电脑资料这篇文章主要为大家介绍了Ecshop二次开发之自定义库文件和模板数据调用方法,是进行ecshop二次开发中非常实用的重要技巧,涉及底层库文件的修改与应用,需要的朋友可以参考下本文实例讲述了Ecshop二次开发之自定义库文件和模板数据调用方法,。
分享给大家供大家参考。
具体方法如下:Smarty的标签非常多,也比较繁琐,所以Ecshop使用了精简版的Smarty,其中用到的Smarty模板语法:{$keywords} 输出模板变量{$array.test.abc} 输出二维数组{$lang.remark_package} 语言包$lang[remark_package]{insert_scripts files=‘common.js‘} 引入js文件xxxx 循环xxxx 判断引入goods_tags.lbi库文件,相当于PHP的include{*内容*} html注释,只在模板上显示,页面上会被删除掉.Ecshop二次开发的数据调用,主要动用到以下两个目录下的文件dwt(模板文件)路径: themes\\defaultlbi(库文件)路径: themes\\default\\library举个例子就很清楚了,是我从网上找来的,由于转载得很严重,所以不知道真正出处。
我们在themes\\default\\library下新建一个名为newest_comments.lbi的库文件,写入以下内容:代码如下:if(!function_exists("get_new_comments")){function get_new_comments($num){$sql = ‘SELECT * FROM ‘.$GLOBALS[‘ecs‘]->table(‘comment‘) .‘ WHERE status = 1 AND parent_id = 0 and comment_type=0 ‘.‘ ORDER BY add_time DESC‘;if ($num > 0){$sql .= ‘ LIMIT ‘ . $num;}//echo $sql;$res = $GL OBALS[‘db‘]->getAll($sql);$comments = array();foreach ($res AS $idx => $row){$comments[$idx][‘add_time‘] = $comments[$idx][‘add_time‘] = local_date($GLOBALS[‘_CFG‘][‘time_format‘],$row[‘add_time‘]);$comments[$idx][‘user_name‘] = $row[‘user_name‘];$comments[$idx][‘content‘] = $row[‘content‘];$comments[$idx][‘id_value‘] = $row[‘id_value‘];}return $comments;}}$this->assign(‘new_comments‘,get_new_comments(10)); // 10条最新评论>{$comment.content|truncate:15:""}时间:{$comment.add_time}这样一个库文件就做好了,电脑资料《Ecshop二次开发之自定义库文件和模板数据调用实例》(https://www.)。
ecshop二次开发函数大全
ecshop二次开发函数大全所有函数功能说明:lib_time.phpgmtime()方法:获得当前格林威治时间的时间戳server_timezone()方法:获得服务器的时区local_mktime($hour = NULL , $minute= NULL, $second = NULL, $month = NULL, $day = NULL, $year = NULL)方法:生成一个用户自定义时区日期的GMT时间戳local_date($format, $time = NULL)方法:将GMT时间戳格式化为用户自定义时区日期gmstr2time($str)方法:转换字符串形式的时间表达式为GMT时间戳local_strtotime($str)方法:将一个用户自定义时区的日期转为GMT时间戳local_gettime($timestamp = NULL)方法:获得用户所在时区指定的时间戳local_getdate($timestamp = NULL)方法:获得用户所在时区指定的日期和时间信息lib_base.phpsub_str($str, $length = 0, $append = true)方法:截取UTF-8编码下字符串的函数real_ip()方法:获得用户的真实IP地址str_len($str)方法:计算字符串的长度(汉字按照两个字符计算)get_crlf()方法:获得用户操作系统的换行符send_mail($name, $email, $subject, $content, $type = 0, $notification=false) 方法:邮件发送gd_version()方法:获得服务器上的GD 版本file_get_contents($file)方法:如果系统不存在file_get_contents函数则声明该函数file_put_contents($file, $data, $flags = ”)方法:如果系统不存在file_put_contents函数则声明该函数floatval($n)方法:如果系统不存在floatval 函数则声明该函数file_mode_info($file_path)方法:文件或目录权限检查函数log_write($arg, $file = ”, $line = ”)方法:写入日志内容make_dir($folder)方法:检查目标文件夹是否存在,如果不存在则自动创建该目录gzip_enabled()方法:获得系统是否启用了gzipaddslashes_deep($value)方法:递归方式的对变量中的特殊字符进行转义addslashes_deep_obj($obj)方法:将对象成员变量或者数组的特殊字符进行转义stripslashes_deep($value)方法:递归方式的对变量中的特殊字符去除转义make_semiangle($str)方法:将一个字串中含有全角的数字字符、字母、空格或‟%+-()‟字符转换为相应半角字符check_file_type($filename, $realname = ”, $limit_ext_types = ”)方法:检查文件类型/文件名/真实文件名/允许的文件类型mysql_like_quote($str)方法:对MYSQL LIKE 的内容进行转义过滤掉_ %等字符.real_server_ip()方法:获取服务器的ipecs_header($string, $replace = true, $http_response_code = 0)方法:自定义header 函数,用于过滤可能出现的安全隐患ecs_iconv($source_l ang, $target_lang, $source_string = ”)方法:自定义的编码转换ecs_geoip($ip)方法:取得IP的地址,采用IP库trim_right($str)方法:去除字符串右侧可能出现的乱码move_upload_file($file_name, $target_name = ”)方法:将上传文件转移到指定位置json_str_iconv($str)方法:将JSON传递的参数转码get_file_suffix($file_name, $allow_type = array())方法:获取文件后缀名,并判断是否合法read_static_cache($cache_name)方法:读结果缓存文件write_static_cache($cache_name, $caches)方法:写结果缓存文件lib_common.php (公用函数库)db_create_in($item_list, $field_name = ”)方法:创建像这样的查询: “IN(…a‟,'b‟)” $item_list为数组is_email($user_email)方法:验证输入的邮件地址是否合法is_time($time)方法:检查是否为一个合法的时间格式assign_query_info()方法:获得查询时间和次数,并赋值给smartyregion_result($parent, $sel_name, $type)方法:创建地区的返回信息get_regions($type = 0, $parent = 0)方法:获得指定国家的所有省份, 函数需要数据库支持.get_shipping_config($area_id)方法:获得配送区域中指定的配送方式的配送费用的计算参数比如快捷公司不同. init_users()方法:初始化会员数据整合类cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0, $is_show_all= true)方法:获得指定分类下的子分类的数组, $re_type控制返回类型cat_options($spec_cat_id, $arr)方法:过滤和排序所有分类,返回一个带有缩进级别的数组load_config()方法:载入配置信息get_brand_list()方法:取得品牌列表get_brands($cat = 0, $app = …brand‟)方法:获得某个分类下的品牌列表get_promotion_info($goods_id = ”)方法:所有的促销活动信息get_children($cat = 0)方法:获得指定分类下所有底层分类的IDget_article_children ($cat = 0)方法:获得指定文章分类下所有底层分类的IDget_mail_template($tpl_name)方法:获取邮件模板order_action($order_sn, $order_status, $shipping_status, $pay_status, $note = ”, $username = null)方法:记录订单操作记录price_format($price, $change_price = true)方法:格式化商品价格get_virtual_goods($order_id, $shipping = false)方法:返回订单中的虚拟商品记录是否发货.virtual_goods_ship(&$virtual_goods, &$msg, $order_sn, $return_result = false, $process = …other‟)方法:虚拟商品发货virtual_card_shipping ($goods, $order_sn, &$msg, $process = …other‟)方法:虚拟卡发货virtual_card_result($order_sn, $goods)方法:返回虚拟卡信息get_snatch_result($id)方法:获取指定id snatch 活动的结果clear_tpl_files($is_cache = true, $ext = ”)方法:清除指定后缀的模板缓存或编译文件clear_com piled_files($ext = ”)方法:清除模版编译文件clear_cache_files($ext = ”)方法:清除缓存文件clear_all_files($ext = ”)方法:清除模版编译和缓存文件smarty_insert_scripts($args)方法:页面上调用的j s文件,组合功能.smarty_create_pages($params)方法:创建分页的列表build_uri($app, $params, $app end = ”, $page = 0, $size = 0)方法:重写URL 地址formated_weight($weight)方法:格式化重量log_account_change($user_id, $user_money = 0, $frozen_money = 0, $rank_points = 0, $pay_points = 0, $change_desc = ”, $change_type = ACT_OTHER)方法:记录帐户变动article_cat_list($cat_id = 0, $selected = 0, $re_type = true, $level = 0)方法:获得指定分类下的子分类的数组/ 向下取数组.article_cat_options($spec_cat_id, $arr)方法:过滤和排序所有文章分类,返回一个带有缩进级别的数组uc_call($func, $params=null)方法:调用UCenter的函数exception_handler($errno, $errstr, $errfile, $errline)方法:error_handle回调函数未启用.get_image_path($goods_id, $image=”, $thumb=false, $call=‟goods‟, $del=false)方法:重新获得商品图片与商品相册的地址user_uc_call($func, $params = null)方法:调用使用UCenter插件时的函数get_volume_price_list($goods_id, $price_ty pe = ‟1′)方法:取得商品优惠价格列表get_final_price($goods_id, $goods_num = ‟1′, $is_spec_price = false, $spec = array())方法:取得商品最终使用价格get_package_info($id)方法:获取指定id package 的信息get_package_goods($package_id)方法:获得指定礼包的商品lib_main.php (前台公用函数库)update_user_info()方法:更新用户SESSION,COOKIE及登录时间、登录次数。
ecshop二次开发经验讲座
ecshop二次开发经验讲座ecshop程序的基本结构和介绍-讲座1ecshop程序的基本结构, ecshop其实算是结构化的程序设计。
不算是三层结构.ecshop 主要采用的是ecshop自写的非标准化smarty 模板引擎来实现的。
ecshop模板的核心程序在includes/cls_template.php.将来我们将会详细讲述eshop模板结构的原理.有关模板制作的教程,可以参考以下路径/doc/ff55575a312b3169a451a48d.html /html/dianzishangwujiaocheng/ecshoptemplate/inde x.html ecshop有一个安装的过程,除了配置一些模板信息,测试数据外。
最重要的是规划好了模板的引用,以及数据库相关的配置信息。
ecshop的模板位置于themes目录.ecshop 系统的配置文件信息位置于data/config.php文件。
ecshop处理整站程序的文件在includes目录里面.既然谈到了ecshop的模板引擎。
那么一定要说说ecshop 的缓存目录。
位于temp目录.ecshop可以有不同的语言版本,他是靠语言包languages目录来控制的。
ecshop默认的后台路径位置与admin目录,他是整个后台管理的核心.有朋友问我,如果修改ecshop浏览器里面显示的小推车图标.很简单,他就是根目录下的favicon.ico文件。
你将他喜欢修改就可以.大家都知道ecshop最大的特点是支持wap访问,所以mobile 目录理所当然的就是wap程序所在的目录。
如果要让ecshop支持wap访问,很简单。
我们必须在ecshop后台的系统设置里面,wap 设置里面开启wap功能就可以了。
ecshop初始化文件init.php组成和工作原理-讲座2ecshop初始化文件组成和工作原理,大家都知道,ecshop核心处理文件是在includes目录里面,包括ecshop支付插件,ecshop功能函数公共函数文件,ecshop配送方式插件等.甚至包括ecshop模板解析文件cls_template.php文件.ecshop中各个文件的初始化,引用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
科技信息博士·专家论坛1.什么是二次开发二次开发,简单的说就是在现有的软件上进行定制修改、功能的扩展,然后达到自己想要的功能,一般来说都不会改变原有系统的内核。
一般的来说,一些大公司如IBM开发了一个大型的软件系统平台,根据不同的客户的需要,一些其他的中小公司为根据客户需求在该平台上进行第二次有针对性的开发。
是否提供相应的接口,有的软件公司只提供软件,但也有小公司连代码一起出售,如是后者,就更方便进行二次开发。
比如售票系统,车站里面弄好了,提供几个储存过程给银行,银行就可以代理售票了,这也是一种,还有一种如我们利用delphi, C#等操作word等。
1.1二次开发的基本要求一般进行软件的二次开发,需要掌握以下基本要求:第一,要有这个开源产品的所用语言的语言基础。
第二,要对这个开源产品的功能和使用比较熟悉,因为你熟悉了,你才知道一个需求下来,你要改什么,什么是系统自带的,大概要怎么改。
第三,要熟悉这个开源产品的数据结构,代码结构,系统的框架结构,核心是哪里,附属功能是在哪里。
简单点说,就是数据库,代码逻辑,文件目录的熟悉。
如果是用接口式的二次开发,则需要你对这个接口比较熟悉,一般来说会有相应的文档。
第四,根据你的需求,然后利用开源产品的内核,进行系统的扩展和修改,以达到你的需求。
第五,对其提供的SDK中的API函数有一定了解,以利于你对SDK 中个函数的使用更加灵活方便。
1.2使用PHP的开源产品的二次开发的基本要求第一,基本要求:HTML(必须要非常熟悉),PHP(能看懂代码,能写一些小系统,如:留言板,小型CMS),Mysql(至少会一种数据库),Javas-cript(能看懂,能改现成的一些代码),Div+Css(能进行界面的调整,明白CSS是怎么使用的),也就是说,要懂得网页开发的一些基本知识。
第二,熟悉开源产品的使用,比如Dedecms,你要知道怎么登录,怎么新建栏目,怎么添加文章,模板标签的使用方法,模型的概念和使用方法等等一些功能。
当然,想了解这些,只需要在官方网站上,找到并下载相关的文档,仔细学习文档,了解开源产品的使用。
第三,要熟悉这个开源产品的数据库结构,还要理解里面核心文件的内容,比如:数据库类怎么使用,常用的安全过滤是怎么做的,模板引擎又是怎么使用的等等一些核心内容。
还要知道这个开源产品的目录结构,就是说,你要知道哪是放模板的,哪里是做控制的,哪里是放样式的。
在ECSHOP中所使用的数据库是MySQL,要学会使用。
第四,熟悉你的需求,对需求进行解读,然后确定如何对这个开源产品进行修改和扩展。
第五,PHP中的一个通用性很强的模板Smarty在PHP的相关开源产品中得到了很大的应用,如,ECSHOP中就使用了Smarty的模板引擎。
2.ECSHOP系统的特点在PHP中,现在流行的开源的二次开发软件很多,譬如,PHPWind,分商业版和免费版,但在功能和版本上没有区别,软件全面开源并且免费。
版本现已有累积超过60万的用户;电子商务系统如ECSHOP,是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。
系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序,由于开源程序面向多用户,所以它的弹性好,随之而来的就是它的结构体系复杂,代码量巨大,一个开源系统往往是页面套页面,几百个页面,每个页面少则几百,多则几千行代码,所以也经常有不少的程序员在报怨公司为什么要做二次开发,其实,一款二次开发的软件有很多需要我们学习的地方,有那么大的市场份额,也说明它有很多的优点。
简单的说,有如下几点:(1)是一款开源的网上商店系统。
(2)操作简便,只需轻点鼠标+简单录入即可完成商城管理。
(3)在系统架构、数据库、程序等方面都经过精心设计,保证了系统的健壮和效率。
ECSHOP系统已经有不少的成功案例,比如,NOKIA的官方网站,MOTOROLA摩托罗拉的官方网站,海尔商城等,ECSHOP在市场上的应用很广,不是使用ECSHOP建立的电子商务网站都可以使用ECSHOP 进行开发。
3.ECSHOP案例现在电子商务发展非常的迅速,有很多的电子商务网站营运而生,一个很小的团队想开发出一个很强大的购物网站将需要付出很多的时间和精力。
淘宝网就是一个很成功的购物网站,以下实现修改EC-SHOP商品页,加入购物车弹出浮动层,仿淘宝效果,对一些电子商务的购物网站美化效果。
下面以ECSHOP的二次开发为例,介绍一下如何使用ECSHOP进行软件开发。
ECSHOP版本:ECShop_V2.7.2二次开发的功能:修改ECSHOP商品页,加入购物车弹出浮动层,仿淘宝效果在ECSHOP商品详情页点“加入购物车”,直接在当前页弹出一个漂亮的小窗口,此方法比较简单,不需要修改PHP程序,也不需要在ECSHOP模板页预设隐藏层,主要是修改JS文件。
1)首先将需要用得到的图片下载到你网站的/data/images/下面,注意,保存图片的时候不要重命名,要用原来的名字直接保存。
2)以下修改以官方默认模板为例,打开ECSHOP模板文件/themes/ default/goods.dwt将<li class="padd"><a href="javascript:addToCart({$goods.goods_id}) "><img src="images/bnt_cat.gif"/></a>修改为<li class="padd"style="po-sition:relative;"id="gwc"><a href="javascript:addToCart({$goods.goods_id}) "><img src="images/bnt_cat.gif"/></a>3)下面修改ECSHOP语言包文件,打开/languages/zh_cn/common. php找到$_LANG['cart_info']将它的值修改为购物车共%d件商品,总计%s修改后是这个样子$_LANG['cart_info']='购物车共%d件商品,总计%s';4)打开/js/common.js找到所示代码Case‘1’:If(confirm(result.message))location.href=cart_url;Break;Case‘2’:if(confirm(result.message))location.href=cart_url;Case‘3’:location.href=cart.url;并修改为Case‘1’:If(confirm(result.message))location.href=cart_url;openDiv_ECSHOP 120(result.content);Break;Case‘2’:if(confirm(result.message))location.href=cart_url;openDiv_ECSHOP 120(result.content);Case‘3’:openDiv_ECSHOP120(result.content);5)修改/js/common.js文件,在文件的最末尾增加如下两段代码//关闭图层function cancel_div_ECSHOP120(){document.getElementByid (‘gwc’).removeChile(docile(‘speDiv’));vari=0;var sel_boj=document.ge-tElementsByTagName(‘select’);while(sel_boj[i]){sel_boj[i].style.visibility=’visible’;i++;}}4.结束语其实,进行二次开发不难,不需要把二次开发的软件完全阅读个遍,只需要读懂整个二次开发软件的局部,甚至是一个页面中的某一行,找到文件,通过Dreamweaver、记事本等工具的查找都可快速的找到,对其修改即可。
在对ECSHOP进行开发的时候,可以进行页面的新建,添加你所使用的任何功能。
经过二次开发后,能完成你所需要的需求,积累丰富经验,做软件开发的经验有自己的,也有别人的。
所谓别人的,就是在做这个软件的二次开发的时候,能吸收到这个软件系统的精华,然后把这个精华融入到自己的思想里,还能总结项目架构的经验,供自己以后使用。
有句话说的好,就是:聪明的人会把别人失败的经验当作自己的经验,而傻的人就是自己无数次体验失败后才作为自己的经验。
二次开发不仅仅是开发、提高我们做软件开发的能力,而更重要的是吸取精华,总结经验,理顺思路,少走弯路,提升自己。
21世纪的今天,计算机软件技术正在快速迅猛的发展,公司为了在市场上求得更巨大的商业利益,不少软件都提供开源,而且完全免费,功能上比大多数非开源的软件功能还要强很多,为什么我们不去用呢?参考文献[1]刘光.地理信息系统二次开发实例教程.北京:清华大学出版社, 2004[2]刘言松.AutoCAD2009中文版二次开发实例教程.北京:化学工业出版社,2009基于PHP技术的ECSHOP的二次开发芜湖信息技术职业学院软件工程系殷佳庭陆婷婷[摘要]目前,在市场上流行的计算机编程语言有很多,其中PHP的市场份额很大,在最新的一期的编程语言排名中,PHP排在第5位,用PHP开发一个大型的电子商务的购物网站将会消耗大量的时间和精力,为了克服这些困难,不少公司推出了自己的开源产品,便于进行二次开发,比如购物类的网站ECSHOP,对它的功能进行定制和扩展,就能在较短的时间内开发出产品。
本文简要介绍基于PHP技术的ECSHOP的二次开发。
[关键词]二次开发开源电子商务Smarty ECSHOP基金项目:本文系2010年安徽省高校省级质量教学研究项目《基于校企合作的动漫设计与制作专业课程体系的建设和研究》,项目编号:20101296。
——29。