版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
專業(yè)專注用心服務(wù)電話13891864749郵件:xaphp@126.com網(wǎng)址:Ecshop二次開發(fā)教程西安php服務(wù)中心齊老師目錄TOC\o"1-1"\h\z\u前言 3一、商圈和地區(qū)進(jìn)行關(guān)聯(lián) 4二、其他頁(yè)面顯示購(gòu)買記錄的函數(shù) 5三、多貨幣解決方案 6四、仿淘寶商品詳細(xì)頁(yè)實(shí)現(xiàn)尺碼顏色關(guān)聯(lián)顯示庫(kù)存 12五、仿淘寶商品詳細(xì)頁(yè)加入購(gòu)物車效果 14六、ecshop加入購(gòu)物車效果(各個(gè)頁(yè)面) 22七、商品列表頁(yè)面“喜歡“功能實(shí)現(xiàn) 29八、商品列表也顯示獲贈(zèng)消費(fèi)積分 32九、分析ecshop里的$GLOBALS 37十、解決選擇屬性直接就是屬性價(jià)格不需要在原價(jià)基礎(chǔ)上加價(jià) 38十一、商品詳細(xì)頁(yè)下載商品介紹相關(guān)圖片 39十二、實(shí)現(xiàn)后臺(tái)二次開發(fā)后功能模塊仍然可以分配權(quán)限 41十三、ecshop調(diào)用bbs數(shù)據(jù) 42十四、整理了一個(gè)獲取用戶等級(jí)的函數(shù) 43十五、商品頁(yè)顯示具體屬性排序 44十六、解決ecshop新建頁(yè)面分頁(yè)問(wèn)題 49十七、剛修改的偽靜態(tài)分類URL 52十八、ecshop批發(fā)銷售 66十九、網(wǎng)銀支付直通插件實(shí)現(xiàn)方法 69二十、商品列表頁(yè)多圖切換的實(shí)現(xiàn) 75二十一、完善論壇發(fā)布的qq登錄插件 77二十二、倒計(jì)時(shí)代碼 78二十三、關(guān)于ecshop回調(diào)函數(shù)應(yīng)用 83二十四、商品內(nèi)容頁(yè)加訂單留言功能分析 84二十五、有關(guān)商品詳細(xì)頁(yè)是常規(guī)顯示還是顯示宣傳頁(yè)的實(shí)現(xiàn)方法 85二十六、后臺(tái)添加搜索功能講解 87二十七、分享ec搜索出現(xiàn)相關(guān)商品的效果滑動(dòng)效果(模仿百度) 88二十八、修改注冊(cè)發(fā)送郵件(更新) 94二十九、新增加一調(diào)用編輯器函數(shù) 97三十、簡(jiǎn)單實(shí)現(xiàn)各個(gè)頁(yè)面都可顯示友情鏈接 97三十一、Ecshop系統(tǒng)框架分析 99三十二、二次開發(fā)技術(shù)共享后臺(tái)郵件群發(fā)共享 100三十三、ecshop內(nèi)頁(yè)調(diào)用友情鏈接 100三十四、項(xiàng)目要求在后臺(tái)商品分類添加圖片的功能。 102三十五、分類按照拼音第一字母排序顯示實(shí)現(xiàn) 102三十六、獲取分類的一級(jí)分類和二級(jí)分類 106三十七、如何調(diào)用解決列表的購(gòu)買數(shù)量 107三十八、詳情頁(yè)調(diào)評(píng)論次數(shù) 108三十九、關(guān)于購(gòu)買數(shù)量訂單數(shù)量 109四十、Ecshopajax應(yīng)用討論 109四十一、調(diào)用當(dāng)前分類或當(dāng)前分類的下級(jí)分類函數(shù) 115四十二、在商品列表顯示購(gòu)買記錄 118四十三、ajax更新購(gòu)物車數(shù)量 118四十四、PHP導(dǎo)出excle數(shù)據(jù) 123四十五、頁(yè)面多倒計(jì)時(shí)顯示最新修改 125四十六、關(guān)于lbi文件控制原理分析 129四十七、頁(yè)面瀏覽歷史圖片調(diào)用分析 130前言2008年我們開始接觸ecshop二次開發(fā),為電子商務(wù)中小企業(yè)提供技術(shù)服務(wù)是我們的宗旨,一路走來(lái),我們服務(wù)客戶的同時(shí)把我們一些技術(shù)解決辦法進(jìn)行整理、發(fā)布,并通過(guò)齊老師的審核,如有錯(cuò)誤或不嚴(yán)謹(jǐn)?shù)牡胤綒g迎網(wǎng)友們拍磚指正。一、商圈和地區(qū)進(jìn)行關(guān)聯(lián)目前系統(tǒng)地區(qū)支持四級(jí)分類,但是有時(shí)候客戶要求五級(jí)比如中國(guó)-陜西-西安-碑林-php服務(wù)中心商圈實(shí)現(xiàn)方法異常簡(jiǎn)單我們只需要修改admin下templates下area_list.htm{if$region_typeeq'0'}{$lang.add_country}:{elseif$region_typeeq'1'}{$lang.add_province}:{elseif$region_typeeq'2'}{$lang.add_city}:{elseif$region_typeeq'3'}{$lang.add_cantonal}:{elseif$region_typeeq'4'}添加商圈:{/if}
四十一行
{if$region_type<4}3改成4
通過(guò)以上方式就可實(shí)現(xiàn)二、其他頁(yè)面顯示購(gòu)買記錄的函數(shù)functionget_bought_notes(){
$sql='SELECTu.user_name,og.goods_number,og.goods_id,og.goods_name,oi.shipping_name,oi.invoice_no,oi.add_time,IF(oi.order_statusIN(2,3,4),0,1)ASorder_status'.
'FROM'.$ecs->table('order_info').'ASoiLEFTJOIN'.$ecs->table('users').'ASuONoi.user_id=u.user_id,'.$ecs->table('order_goods').'ASog'.
'WHEREoi.order_id=og.order_idAND'.time().'-oi.add_time<2592000
ORDERBYoi.add_timeDESCLIMIT5';
$bought_notes=$db->getAll($sql);
foreach($bought_notesas$idx=>$value)
{
$goods_id=$value['goods_id'];
$bought_notes[$idx]['goods_thumb']=$db->getOne("selectgoods_thumbfrom".$ecs->table('goods')."wheregoods_id='$goods_id'");
}
return$bought_notes;}
<!--{foreachfrom=$bought_notesitem=bought}-->
<divclass="leftdown_one">
<divclass="one_pic"><ahref="goods.php?id={$bought.goods_id}">
<imgsrc="{$bought.goods_thumb}"width="49"height="49"/></a></div>
<ulclass="leftdown_words">
<li><spanstyle="color:#b3ce00">{$bought.user_name}</span>拍下了:</li>
<listyle="color:#e70000">{$bought.goods_name}</li>
<li>{$bought.shipping_name}:{$bought.invoice_no}</li>
</ul>
</div>
<!--{/foreach}-->
三、多貨幣解決方案首先在我們的后臺(tái)網(wǎng)店設(shè)置里要添加匯率轉(zhuǎn)換的功能,如何添加網(wǎng)店功能自己摸索一下,你要把添加的功能插入表里。如圖:
我們的匯率都是和美元進(jìn)行轉(zhuǎn)換的。開始前臺(tái)實(shí)現(xiàn):首先我們?cè)谑醉?yè)加上多語(yǔ)言的鏈接如圖:我們看下url<UL><LI><Ahref="{$url_head}¤cy=USD"><IMGsrc="images/USD.gif">USDollar</A></LI><LI><Ahref="{$url_head}¤cy=EUR"><IMGsrc="images/EUR.gif">Euro</A></LI><LI><Ahref="{$url_head}¤cy=GBP"><IMGsrc="images/GBP.gif">BritishPound</A></LI><LI><Ahref="{$url_head}¤cy=CNY"><IMGsrc="images/CNY.gif">ChinaRMB</A></LI><LI><Ahref="{$url_head}¤cy=AUD"><IMGsrc="images/AUD.gif">AustrilianDollar</A></LI></UL>這個(gè){$url_head}
我是重新建了一個(gè)文件conn.php放到首頁(yè),每個(gè)文件調(diào)用。//路徑處理
$url_this="[url=http://]http://".$_SERVER[/url]['HTTP_HOST'].$_SERVER['PHP_SELF']."?id=".$_GET['id'];$smarty->assign("url_head",$url_this);3、我們發(fā)現(xiàn)都是在每個(gè)頁(yè)面后面?zhèn)髁艘淮蝕et值,那么在那接這些get值呢,我們肯定要找每個(gè)頁(yè)面的共同文件,不難想到init.php。我在init.php的最后加入
<selectname="hbxz"id="hbxz"
onChange="changhb(this.value)">
<optionvalue="USD">USDollars</option>
<optionvalue="GBP"
>GBP</option>
<optionvalue="AUD">AUG</option>
<optionvalue="EUR">Euro</option>
<optionvalue="CAD"
>CAD</option>
<optionvalue="HKD"
>HKD</option>
</select><script>functionchanghb(kk){location.href='<?phpecho"http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?id=".@$_GET['id'];?>¤cy='+kk;}</script[/code]這個(gè)代碼大家明白吧,我接到get值后,給了session,如果session不存在話。我們默認(rèn)就是usd這樣每個(gè)頁(yè)面都可以獲得當(dāng)前的session值
。4、我們通過(guò)以上操作至少在每個(gè)頁(yè)面可以搞定客戶選的貨幣是什么,下來(lái)我們就考慮如何解決顯示問(wèn)題,如果每個(gè)頁(yè)面都修改顯示goods價(jià)格那多麻煩啊,我們熟悉ecshop的朋友不難想到我們所有顯示的價(jià)格都是在一個(gè)函數(shù)里進(jìn)行里處理,這應(yīng)該感謝官方的技術(shù)人員代碼寫的好。當(dāng)然是lib_common.php里得price_format()這個(gè)函數(shù),
我們想一下,如果在這搞定是不是所有顯示都搞定了我們就從這入手
以下是我修改后的函數(shù)functionprice_format($price,$change_price=true){$currency=$_SESSION['currency'];$rate=explode(',',$GLOBALS['_CFG']['rate']);if($currency=='USD'){$price=$price*$rate[0];}if($currency=='CNY'){$price=$price*$rate[3];}if($currency=='EUR'){$price=$price*$rate[1];}if($currency=='GBP'){$price=$price*$rate[2];}if($currency=='AUD'){$price=$price*$rate[4];}if($change_price&&defined('ECS_ADMIN')===false){switch($GLOBALS['_CFG']['price_format']){case0:$price=number_format($price,2,'.','');break;case1://保留不為0的尾數(shù)$price=preg_replace('/(.*)(\\.)([0-9]*?)0+$/','\1\2\3',number_format($price,2,'.',''));if(substr($price,-1)=='.'){$price=substr($price,0,-1);}break;case2://不四舍五入,保留1位$price=substr(number_format($price,2,'.',''),0,-1);break;case3://直接取整$price=intval($price);break;case4://四舍五入,保留1位$price=number_format($price,1,'.','');break;case5://先四舍五入,不保留小數(shù)$price=round($price);break;}}else{$price=number_format($price,2,'.','');}switch($currency){case'USD':returnsprintf($GLOBALS['_CFG']['currency_format'],$price);break;case'CNY':returnsprintf($GLOBALS['_CFG']['cprice_format'],$price);break;case'EUR':returnsprintf($GLOBALS['_CFG']['aprice_format'],$price);break;case'GBP':returnsprintf($GLOBALS['_CFG']['ybprice_format'],$price);break;case'AUD':returnsprintf($GLOBALS['_CFG']['aoprice_format'],$price);break;}}$rate=explode(',',$GLOBALS['_CFG']['rate']);
這句是從數(shù)據(jù)庫(kù)獲得我們當(dāng)時(shí)的參數(shù)然后我們計(jì)算,同時(shí)返回值的時(shí)候我們用了系統(tǒng)設(shè)置的符號(hào)解決問(wèn)題,前臺(tái)就這樣搞定。5、有關(guān)交易。后臺(tái)的操作我做簡(jiǎn)單的介紹,我們只是解決了顯示問(wèn)題,其實(shí)我們實(shí)質(zhì)的數(shù)據(jù)還是美元,在我們提交訂單的時(shí)候,我們?cè)趏rder_goods表加倆個(gè)字段一個(gè)是客戶選的貨幣方式,這樣生成訂單后,當(dāng)我進(jìn)入我的會(huì)員中心我依然可以看到我購(gòu)買人民幣是多少錢,我們讀取數(shù)據(jù)庫(kù)的方式進(jìn)行換算,另外一個(gè)字段是我們換算后的金額。當(dāng)然我們之前美元的總金額都是在的。在支付的時(shí)候我們給貝寶付參數(shù),就是貨幣類型。四、仿淘寶商品詳細(xì)頁(yè)實(shí)現(xiàn)尺碼顏色關(guān)聯(lián)顯示庫(kù)存效果如下:goods.dwt修改如何下:
<!--{foreachfrom=$spec.valuesitem=valuekey=key}--><a{if$keyeq0}class="cattsel"{/if}onclick="changeAtt(this,{$value.id},{$goods.goods_id})"href="javascript:;"name="{$value.id}"title="[{if$value.pricegt0}{$lang.plus}{elseif$value.pricelt0}{$lang.minus}{/if}{$value.format_price|abs}]">{$value.label}<inputstyle="display:none"id="spec_value_{$value.id}"type="radio"name="spec_{$spec_key}"value="{$value.id}"{if$keyeq0}checked{/if}/></a><!--{/foreach}-->
在顯示詳細(xì)信息合適的地方加<fontstyle="color:#CCCCCC;">(庫(kù)存:<fontid="shows_number">{$goods.goods_number}{$goods.measure_unit}</font>)</font>這是動(dòng)態(tài)加載庫(kù)存的地方
選擇打鉤這個(gè)樣式論壇有人發(fā)過(guò)也不是很難我不在詳細(xì)貼出在goods.dwt加js代碼;functionchangeAtt(t,a,goods_id){t.lastChild.checked='checked';for(vari=0;i<t.parentNode.childNodes.length;i++){if(t.parentNode.childNodes[i].className=='cattsel'){t.parentNode.childNodes[i].className='';}}t.className="cattsel";varformBuy=document.forms['ECS_FORMBUY'];spec_arr=getSelectedAttributes(formBuy);Ajax.call('goods.php?act=get_products_info','id='+spec_arr+'&goods_id='+goods_id,shows_number,'GET','JSON');changePrice();}functionshows_number(result){if(duct_number!=undefined){$('shows_number').innerHTML=duct_number+'件';}else{$('shows_number').innerHTML='未設(shè)置'}}打開goods.php添加70行左右吧if(!empty($_REQUEST['act'])&&$_REQUEST['act']=='get_products_info'){include('includes/cls_json.php');$json=newJSON;//$res=array('err_msg'=>'','result'=>'','qty'=>1);$spce_id=$_GET['id'];$goods_id=$_GET['goods_id'];$row=get_products_info($goods_id,explode(",",$spce_id));//$res=array('err_msg'=>$goods_id,'id'=>$spce_id);die($json->encode($row));}五、仿淘寶商品詳細(xì)頁(yè)加入購(gòu)物車效果仿淘寶商品詳細(xì)頁(yè)加入購(gòu)物車效果,效果大家應(yīng)該都知道,如圖:
實(shí)現(xiàn)方法:
goods.dwt頁(yè)面
<ahref="javascript:addToCart({$goods.goods_id},0,1)"><imgsrc="images/bnt_cat.gif"/></a>和默認(rèn)的鏈接有點(diǎn)點(diǎn)區(qū)別大家對(duì)比添加
要顯示的層添加到這個(gè)葉面的底部<divclass="cartSure"id="cartSureBox"style="display:none;"><divclass="btn"><ahref="javascript:;"onclick="closeTipBox();">關(guān)閉</a></div><divclass="mesgCon"><h3>寶貝已成功添加到購(gòu)物車!</h3><div>購(gòu)物車共有<spanid="ECS_GOODS_NUMBER"></span>種商品合計(jì):<spanid="ECS_GOODS_PRICE"></span></div><br><inputtype="image"src="images/btn_pay.gif"/></div></div>我把樣式也貼出來(lái)供大家參考.cartSure{position:absolute;left:0;top:545px;width:405px;height:90px;z-index:999;background:url(images/cartSure_bg.gif)00no-repeat;font-size:12px;}.mesgCon{float:left;background:url(images/mesg.png)no-repeat18px9px;color:#666;line-height:21px;padding:000100px;width:320px;}.mesgConh3{float:left;width:320px;color:#333;font-size:14px;margin:-1px06px;height:auto;line-height:20px;background:none;text-align:left;padding:0;font-weight:bold;}.mesgConinput{float:left;margin:011px00}.mesgCondiv{float:left;font-size:13px}.mesgCondivspan{font-size:14px;font-weight:bold;color:#F80}.cartSure.btn{float:left;padding:5px;width:390px}.cartSure.btna{background:url(images/close_bg.gif)no-repeat00;float:right;height:13px;overflow:hidden;text-indent:-5000px;width:38px;}.cartSure.btna:hover{background-position:0-12px}打開js/common.js文件
修改addToCart函數(shù)修改后:functionaddToCart(goodsId,parentId,is_ajax){vargoods=newObject();varspec_arr=newArray();varfittings_arr=newArray();varnumber=1;varformBuy=document.forms['ECS_FORMBUY'];varquick=0;//檢查是否有商品規(guī)格if(formBuy){spec_arr=getSelectedAttributes(formBuy);if(formBuy.elements['number']){number=formBuy.elements['number'].value;}quick=1;}goods.quick=quick;goods.spec=spec_arr;goods.goods_id=goodsId;goods.number=number;goods.parent=(typeof(parentId)=="undefined")?0:parseInt(parentId);if(is_ajax==1){Ajax.call('flow.php?step=add_to_cart','goods='+goods.toJS**tring(),addToCartResp**e_ajax,'POST','JSON');}else{Ajax.call('flow.php?step=add_to_cart','goods='+goods.toJS**tring(),addToCartResp**e,'POST','JSON');}}添加幾個(gè)js函數(shù)/***處理添加商品到購(gòu)物車的反饋信息*/functionaddToCartResp**e_ajax(result){if(result.error>0){//如果需要缺貨登記,跳轉(zhuǎn)if(result.error==2){if(confirm(result.message)){location.href='user.php?act=add_booking&id='+result.goods_id+'&spec='+duct_spec;}//opendiv_booking();}//沒(méi)選規(guī)格,彈出屬性選擇框elseif(result.error==6){openSpeDiv(result.message,result.goods_id,result.parent);}else{alert(result.message);}}else{varcartInfo=document.getElementById('ECS_CARTINFO');varcart_url='flow.php?step=cart';if(cartInfo){cartInfo.innerHTML=result.content;}if(result.one_step_buy=='1'){location.href=cart_url;}else{switch(result.confirm_type){case'1':if(confirm(result.message))location.href=cart_url;break;case'2':if(!confirm(result.message))location.href=cart_url;break;case'3':divTipmiddle(result);//refresh_cart();document.getElementById('jdiv').innerHTML=result.cj;break;default:break;}}}}//購(gòu)物車提示框JSfunctioncloseTipBox(){document.getElementById('cartSureBox').style.display="none";}functiondivTipmiddle(result){openTipBox(result);vara=document.getElementById("cartSureBox");a.style.left=(document.body.clientWidth/2-a.clientWidth/2+245)+"px";}functionopenTipBox(result){document.getElementById('ECS_GOODS_PRICE').innerHTML=result.goods_price;document.getElementById('ECS_GOODS_NUMBER').innerHTML=result.goods_number;document.getElementById('cartSureBox').style.display="block";}functionopendiv_booking(){document.getElementById('buyTip2').style.display="block";}//購(gòu)物車提示框JSfunctioncloseTipBox(){document.getElementById('cartSureBox').style.display="none";}打開flow.php167行左右添加/*取得商品列表,計(jì)算合計(jì)*/$cart_goods=get_cart_goods();//$smarty->assign('total',$cart_goods['total']);$result['goods_price']=$cart_goods['total']['goods_price'];$result['goods_number']=$cart_goods['total']['real_goods_count'];根據(jù)以上操作可實(shí)現(xiàn)六、ecshop加入購(gòu)物車效果(各個(gè)頁(yè)面)1、后臺(tái)網(wǎng)店設(shè)置購(gòu)物車確定提示
選擇為2、打開js/common.js
104行就是case'1'
替換之前的if(confirm(result.message))location.href=cart_url;為opencartDiv(result.shop_price,result.goods_name,result.goods_thumb,result.goods_brief,result.goods_id,result.goods_price,result.goods_number);3、復(fù)制functionopencartDiv(price,name,pic,goods_brief,goods_id,total,number){var_id="speDiv";varm="mask";if(docEle(_id))document.removeChild(docEle(_id));if(docEle(m))document.removeChild(docEle(m));//計(jì)算上卷元素值varscrollPos;if(typeofwindow.pageYOffset!='undefined'){scrollPos=window.pageYOffset;}elseif(typeofpatMode!='undefined'&&patMode!='BackCompat'){scrollPos=document.documentElement.scrollTop;}elseif(typeofdocument.body!='undefined'){scrollPos=document.body.scrollTop;}vari=0;varsel_obj=document.getElementsByTagName('select');while(sel_obj[i]){sel_obj[i].style.visibility="hidden";i++;}//新激活圖層varnewDiv=document.createElement("div");newDiv.id=_id;newDiv.style.position="absolute";newDiv.style.zIndex="10000";newDiv.style.width="500px";newDiv.style.height="270px";newDiv.style.top=(parseInt(scrollPos+200))+"px";newDiv.style.left=(parseInt(document.body.offsetWidth)-400)/2+"px";//屏幕居中newDiv.style.background="#fff";newDiv.style.border="5pxsolid#37911C";varhtml='';//生成層內(nèi)內(nèi)容html='<divstyle="font-size:14;background:#8cc67b;width:480px;height:40px;line-height:40px;padding:010px;font-size:14px;"><spanstyle="float:left;font-weight:bold">產(chǎn)品購(gòu)買</span><ahref=\'javascript:cancel_div()\'style="float:right;padding:026px00;background:url(themes/popocai/images/ico_closebig.gif)rightcenterno-repeat;cursor:pointer;">關(guān)閉</a></div><divclass="cartpopDiv"><divclass="toptitle"><ahref="goods.php?id='+goods_id+'"class="pic"><imgsrc='+pic+'width="100"height="100"/></a><p><fontstyle="font-weight:bold">'+name+'</font>
<fontstyle="color:#ff6701">'+price+'</font><br>'+goods_brief+'</p></div>';html+='<divclass="coninfo">';html+='<tablecellpadding="0"height="30"><tr><tdalign="center">購(gòu)物車共有<fontstyle="color:#ff6701;"><strong>'+number+'</strong></font>種商品:合計(jì):<fontstyle="color:#ff6701;"><strong>'+total+'</strong></font></td></tr>';html+='</table>';html+='</div>';html+="<divstyle='float:left;width:450px;text-align:center;padding:15px00;'><ahref='index.php'><imgsrc='themes/popocai/images/goon_ico.gif'></a>
<ahref='flow.php'><imgsrc='themes/popocai/images/jsico.gif'></a></div>";html+='</div></div>';newDiv.innerHTML=html;document.body.appendChild(newDiv);//mask圖層varnewMask=document.createElement("div");newMask.id=m;newMask.style.position="absolute";newMask.style.zIndex="9999";newMask.style.width=document.body.scrollWidth+"px";newMask.style.height=document.body.scrollHeight+"px";newMask.style.top="0px";newMask.style.left="0px";newMask.style.background="#FFF";newMask.style.filter="alpha(opacity=30)";newMask.style.opacity="0.40";document.body.appendChild(newMask);}到這個(gè)common.js里
大家看了會(huì)覺(jué)的這個(gè)函數(shù)很熟悉這就是這個(gè)文件里的我只是拿出來(lái)修改了一下,當(dāng)然我們可以自己重新寫彈出層比如用jquery
4、打開flow.php
181行左右加入$rows=$GLOBALS['db']->getRow("selectgoods_brief,shop_price,goods_name,goods_thumbfrom".$GLOBALS['ecs']->table('goods')."wheregoods_id=".$goods->goods_id);$result['shop_price']=price_format($rows['shop_price']);$result['goods_name']=$rows['goods_name'];$result['goods_thumb']=$rows['goods_thumb'];$result['goods_brief']=$rows['goods_brief'];$result['goods_id']=$goods->goods_id;$sql='SELECTSUM(goods_number)ASnumber,SUM(goods_price*goods_number)ASamount'.'FROM'.$GLOBALS['ecs']->table('cart')."WHEREsession_id='".SESS_ID."'ANDrec_type='".CART_GENERAL_GOODS."'";$rowss=$GLOBALS['db']->GetRow($sql);$result['goods_price']=price_format($rowss['amount']);$result['goods_number']=$rowss['number'];就是加入購(gòu)物車成功的判斷里面5、我把我們做的樣式和圖片也貼出來(lái)不是很漂亮了/*購(gòu)物車彈出效果*/.cartpopDiv{width:450px;padding:025px;float:left;}.toptitle{width:450px;float:left;padding:16px0;background:url(../images/cartpop_bg.gif)leftbottomrepeat-x;}.toptitlea.pic{float:left;width:100px;height:100px;overflow:hidden;}.toptitlep{float:right;width:350px;font-size:14px;line-height:20px;height:58px;overflow:hidden;}.coninfo{float:left;width:450px;padding:4px06px;background:url(../images/cartpop_bg.gif)leftbottomrepeat-x;font-size:14px;}.coninfotable{float:left;width:100%;border:none;color:#a00;}.coninfotabletd.left{width:82px;text-align:right;font-weight:bold;}.coninfotabletd.leftspan,.toptitlepa{color:#333}.coninfotabletd.gray{color:#999}.coninfotabletdstrong{color:#f00}.coninfotabletdfont{font-size:18px}以上就是我的實(shí)現(xiàn)方法七、商品列表頁(yè)面“喜歡“功能實(shí)現(xiàn)1、通過(guò)后臺(tái)執(zhí)行sq執(zhí)行ALTERTABLE`ecs_goods`ADD`love`INT(10)NOTNULLDEFAULT'0';在goods表添加一新的字段。2、打開category.php找到category_get_goods這個(gè)函數(shù)把要顯示的love也給放進(jìn)去會(huì)程序的網(wǎng)友應(yīng)該明白意思。
/*獲得商品列表*/
$sql='SELECTg.goods_id,g.goods_name,g.goods_name_style,g.market_price,g.love,g.is_new,g.is_best,g.is_hot,g.shop_priceASorg_price,'.
"IFNULL(mp.user_price,g.shop_price*'$_SESSION[discount]')ASshop_price,mote_price,g.goods_type,".
'mote_start_date,mote_end_date,g.goods_brief,g.goods_thumb,g.goods_img'.
'FROM'.$GLOBALS['ecs']->table('goods').'ASg'.
'LEFTJOIN'.$GLOBALS['ecs']->table('member_price').'ASmp'.
"ONmp.goods_id=g.goods_idANDmp.user_rank='$_SESSION[user_rank]'".
"WHERE$where$extORDERBY$sort$order";
$arr[$row['goods_id']]['love']
=$row['love'];
$arr[$row['goods_id']]['name']
=$row['goods_name'];3、打開goods_list.lbi
<ahref="javascript:;"
onClick="change_love({$goods.goods_id})">喜歡</a><fontid="show_loves_{$goods.goods_id}">{$goods.love}</font>一定是在foreach循環(huán)里。在這個(gè)lbi底部加<script>functionchange_love(goods_id){varLastsend=document.getCookie('ECS_auction_Lastsend_'+goods_id);//alert(goods_id);if(Lastsend==null){Ajax.call('goods.php?act=chage_usenum','id='+goods_id,chage_lovenum_Resp**e,'POST','JSON');document.setCookie('ECS_auction_Lastsend_'+goods_id,goods_id);}else{window.location.href='goods.php?id='+goods_id;}}functionchage_lovenum_Resp**e(result){document.getElementById("show_loves_"+result.id).innerHTML=result.usenum;}</script>4、打開goods.php
36行左右加入if($_REQUEST['act']=='chage_usenum'){
include('includes/cls_json.php');
$json
=newJSON;
$res
=array('err_msg'=>'','result'=>'','qty'=>1);$id=$_REQUEST['id'];$sql=$GLOBALS['db']->query("update".$GLOBALS['ecs']->table('goods')."setlove=love+1wheregoods_id='$id'");$res['id']=$id;$res['usenum']=$GLOBALS['db']->getOne("selectlovefrom".$GLOBALS['ecs']->table('goods')."wheregoods_id='$id'");die($json->encode($res));}八、商品列表也顯示獲贈(zèng)消費(fèi)積分有的客戶會(huì)要求把每個(gè)商品的獲贈(zèng)積分顯示在商品列表頁(yè):1、打開category.php找到category_get_goods函數(shù)修改為functioncategory_get_goods($children,$brand,$min,$max,$ext,$size,$page,$sort,$order){$display=$GLOBALS['display'];$where="g.is_on_sale=1ANDg.is_alone_sale=1AND"."g.is_delete=0AND($childrenOR".get_extension_goods($children).')';if($brand>0){$where.="ANDg.brand_id=$brand";}if($min>0){$where.="ANDg.shop_price>=$min";}if($max>0){$where.="ANDg.shop_price<=$max";}/*獲得商品列表*/$sql='SELECTg.goods_id,g.goods_name,g.goods_name_style,g.market_price,g.is_new,g.is_best,g.is_hot,g.shop_priceASorg_price,IF(g.give_integral>-1,g.give_integral,g.shop_price)asintegral,'."IFNULL(mp.user_price,g.shop_price*'$_SESSION[discount]')ASshop_price,mote_price,g.goods_type,".'mote_start_date,mote_end_date,g.goods_brief,g.goods_thumb,g.goods_img'.'FROM'.$GLOBALS['ecs']->table('goods').'ASg'.'LEFTJOIN'.$GLOBALS['ecs']->table('member_price').'ASmp'."ONmp.goods_id=g.goods_idANDmp.user_rank='$_SESSION[user_rank]'"."WHERE$where$extORDERBY$sort$order";$res=$GLOBALS['db']->selectLimit($sql,$size,($1)*$size);$arr=array();while($row=$GLOBALS['db']->fetchRow($res)){$goods_id=$row['goods_id'];$sql2="selectsum(goods_number)ascountfrom".$GLOBALS['ecs']->table('order_goods')."wheregoods_id='".$goods_id."'";$buy_num=$GLOBALS['db']->getOne($sql2);if($row['promote_price']>0){$promote_price=bargain_price($row['promote_price'],$row['promote_start_date'],$row['promote_end_date']);}else{$promote_price=0;}/*處理商品水印圖片*/$watermark_img='';if($promote_price!=0){$watermark_img="watermark_promote_small";}elseif($row['is_new']!=0){$watermark_img="watermark_new_small";}elseif($row['is_best']!=0){$watermark_img="watermark_best_small";}elseif($row['is_hot']!=0){$watermark_img='watermark_hot_small';}if($watermark_img!=''){$arr[$row['goods_id']]['watermark_img']=$watermark_img;}$arr[$row['goods_id']]['goods_id']=$row['goods_id'];if($display=='grid'){$arr[$row['goods_id']]['goods_name']=$GLOBALS['_CFG']['goods_name_length']>0?sub_str($row['goods_name'],$GLOBALS['_CFG']['goods_name_length']):$row['goods_name'];}else{$arr[$row['goods_id']]['goods_name']=$row['goods_name'];}$arr[$row['goods_id']]['count']=$buy_num;$arr[$row['goods_id']]['name']=$row['goods_name'];/*修正積分:轉(zhuǎn)換為可使用多少積分(原來(lái)是可以使用多少錢的積分)*/$arr[$row['goods_id']]['integral']=round($row['integral'],0);$arr[$row['goods_id']]['goods_brief']=$row['goods_brief'];$arr[$row['goods_id']]['goods_style_name']=add_style($row['goods_name'],$row['goods_name_style']);$arr[$row['goods_id']]['market_price']=price_format($row['market_price']);$arr[$row['goods_id']]['shop_price']=price_format($row['shop_price']);$arr[$row['goods_id']]['type']=$row['goods_type'];$arr[$row['goods_id']]['promote_price']=($promote_price>0)?price_format($promote_price):'';$arr[$row['goods_id']]['goods_thumb']=get_image_path($row['goods_id'],$row['goods_thumb'],true);$arr[$row['goods_id']]['goods_img']=get_image_path($row['goods_id'],$row['goods_img']);$arr[$row['goods_id']]['url']=build_uri('goods',array('gid'=>$row['goods_id']),$row['goods_name']);}return$arr;}2、模板部分直接加{$egral}積分九、分析ecshop里的$GLOBALS搞ec二次開發(fā)或研究ec的一些網(wǎng)友經(jīng)常在論壇里提到$GLOBALS['db'];$GLOBALS['ecs'];在那定義的等帖子。下來(lái)就$GLOBALS我說(shuō)一點(diǎn):
想搞明白的朋友執(zhí)行這段代碼<?php$xaphp='西安php服務(wù)中心';echo$GLOBALS['xaphp'];?>瀏覽器當(dāng)然會(huì)打印出
西安php服務(wù)中心
這就是$GLOBALS的作用
“就像大部份的結(jié)構(gòu)化程序,有所謂的全局變量與局部變量,PHP
在這方面也是有相同的處理方式。
在
PHP
的程序執(zhí)行時(shí),系統(tǒng)會(huì)在內(nèi)存中保留一塊全局變量的區(qū)域。實(shí)際運(yùn)用時(shí),可以透過(guò)
$GLOBALS["變量名稱"]
將需要的變量取出。在用戶自定的函數(shù)或程序中,就可以用
$GLOBALS
數(shù)組取出需要的變量在ec里大家打開init.php會(huì)看到$db=newcls_mysql($db_host,$db_user,$db_pass,$db_name);定義了這樣的類
顧名思義$GLOBALS['db']以上觀點(diǎn)是我個(gè)人的理解。十、解決選擇屬性直接就是屬性價(jià)格不需要在原價(jià)基礎(chǔ)上加價(jià)這幾年經(jīng)常遇到這個(gè)需求,就是我們后臺(tái)添加了屬性前臺(tái)選擇屬性,客戶要求這個(gè)價(jià)格就是屬性里的價(jià)格,而不需要在原來(lái)基礎(chǔ)上加價(jià)。
如圖所示:解決方案:我之前在論壇就有對(duì)get_final_price這個(gè)函數(shù)分析,他非常重要,我們加入購(gòu)物車商品價(jià)格都要通過(guò)他來(lái)處理,
比如(促銷,團(tuán)購(gòu),優(yōu)惠。。。。),這樣讓我們想到這個(gè)函數(shù)。
lib_common.php打開找到這個(gè)函數(shù)
只需要if($is_spec_price){if(!empty($spec)){$spec_price=spec_price($spec);$final_price+=$spec_price;}}
改成if($is_spec_price){if(!empty($spec)){$spec_price=spec_price($spec);$final_price=$spec_price;}}即可,我還是建議
二次開發(fā)人員可記住這個(gè)函數(shù)有很多用處。十一、商品詳細(xì)頁(yè)下載商品介紹相關(guān)圖片此功能一般搞批發(fā)的會(huì)有用,他可以點(diǎn)擊copy直接下載商品詳細(xì)頁(yè)的商品描述相關(guān)圖片。因?yàn)榇a設(shè)計(jì)到具體的字符串切分,所以每個(gè)網(wǎng)店形式不一定一樣,我貼出來(lái)供大家參考應(yīng)用。1、打開goods.dwt適當(dāng)位置加<ahref="goods.php?id={$goods_id}&act=export">copy</a>2、打開goods.php加入if(!empty($_REQUEST['act'])&&$_REQUEST['act']=='export'){$id=$_GET['id'];$goods=get_goods_info($goods_id);$goods_desc=$goods['goods_desc'];include_once('whadmin/includes/cls_phpzip.php');$zip=newPHPZip;$array=explode("\n",$goods_desc);foreach($arrayas$value){preg_match("#<pstyle=\"text-align:center;\">(.*)</p>#",$value,$out);preg_match("#<imgsrc=\"/(.*)\"width#",$out[1],$out_img);if($out_img[1]){//echoROOT_PATH.$out_img[1]."<br>";$zip->add_file(file_get_contents(ROOT_PATH.$out_img[1]),$out_img[1]);}}header("Content-Disposition:attachment;filename=goods_img.zip");he
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度離職賠償協(xié)議書陷阱規(guī)避與賠償金支付風(fēng)險(xiǎn)合同
- 2025年度裝卸工勞動(dòng)合同(含解雇保護(hù)條款)
- 2025年度茶葉電商平臺(tái)供應(yīng)鏈金融合作合同范本
- 循環(huán)系統(tǒng)的檢測(cè)與護(hù)理
- 幼兒園預(yù)防狂犬病毒教學(xué)
- 玻璃銷售合作協(xié)議
- 2025出國(guó)勞務(wù)中介服務(wù)合同
- 2025立面改造工程外架施工承包合同
- 雇傭合同條款格式三篇
- 肛腸外科護(hù)理工作總結(jié)
- ICU患者外出檢查的護(hù)理
- 公司收購(gòu)設(shè)備合同范例
- 廣東省潮州市2023-2024學(xué)年高二上學(xué)期語(yǔ)文期末考試試卷(含答案)
- 2024年光伏發(fā)電項(xiàng)目EPC總包合同
- 試卷(完整版)python考試復(fù)習(xí)題庫(kù)復(fù)習(xí)知識(shí)點(diǎn)試卷試題
- 海外資管機(jī)構(gòu)赴上海投資指南(2024版)
- GB/T 44679-2024叉車禁用與報(bào)廢技術(shù)規(guī)范
- 抖音直播帶貨協(xié)議書模板
- 2024義務(wù)教育體育與健康課程標(biāo)準(zhǔn)(2022年版)必考題庫(kù)及答案
- 工業(yè)機(jī)器人控制器:FANUC R-30iB:機(jī)器人實(shí)時(shí)監(jiān)控與數(shù)據(jù)采集技術(shù)教程
- 墓地銷售計(jì)劃及方案設(shè)計(jì)書
評(píng)論
0/150
提交評(píng)論