ecshop二次開發(fā)教程-47案例分析_第1頁
ecshop二次開發(fā)教程-47案例分析_第2頁
ecshop二次開發(fā)教程-47案例分析_第3頁
ecshop二次開發(fā)教程-47案例分析_第4頁
ecshop二次開發(fā)教程-47案例分析_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Ecshop二次開發(fā)教程目錄TOC\o"1-1"\h\z\u前言 3一、商圈和地區(qū)進行關聯(lián) 4二、其他頁面顯示購買記錄的函數(shù) 5三、多貨幣解決方案 6四、仿淘寶商品詳細頁實現(xiàn)尺碼顏色關聯(lián)顯示庫存 12五、仿淘寶商品詳細頁加入購物車效果 14六、ecshop加入購物車效果(各個頁面) 22七、商品列表頁面“喜歡“功能實現(xiàn) 29八、商品列表也顯示獲贈消費積分 32九、分析ecshop里的$GLOBALS 37十、解決選擇屬性直接就是屬性價格不需要在原價基礎上加價 38十一、商品詳細頁下載商品介紹相關圖片 39十二、實現(xiàn)后臺二次開發(fā)后功能模塊仍然可以分配權限 41十三、ecshop調(diào)用bbs數(shù)據(jù) 42十四、整理了一個獲取用戶等級的函數(shù) 43十五、商品頁顯示具體屬性排序 44十六、解決ecshop新建頁面分頁問題 49十七、剛修改的偽靜態(tài)分類URL 52十八、ecshop批發(fā)銷售 66十九、網(wǎng)銀支付直通插件實現(xiàn)方法 69二十、商品列表頁多圖切換的實現(xiàn) 75二十一、完善論壇發(fā)布的qq登錄插件 77二十二、倒計時代碼 78二十三、關于ecshop回調(diào)函數(shù)應用 83二十四、商品內(nèi)容頁加訂單留言功能分析 84二十五、有關商品詳細頁是常規(guī)顯示還是顯示宣傳頁的實現(xiàn)方法 85二十六、后臺添加搜索功能講解 87二十七、分享ec搜索出現(xiàn)相關商品的效果滑動效果(模仿百度) 88二十八、修改注冊發(fā)送郵件(更新) 94二十九、新增加一調(diào)用編輯器函數(shù) 97三十、簡單實現(xiàn)各個頁面都可顯示友情鏈接 97三十一、Ecshop系統(tǒng)框架分析 99三十二、二次開發(fā)技術共享后臺郵件群發(fā)共享 100三十三、ecshop內(nèi)頁調(diào)用友情鏈接 100三十四、項目要求在后臺商品分類添加圖片的功能。 102三十五、分類按照拼音第一字母排序顯示實現(xiàn) 102三十六、獲取分類的一級分類和二級分類 106三十七、如何調(diào)用解決列表的購買數(shù)量 107三十八、詳情頁調(diào)評論次數(shù) 108三十九、關于購買數(shù)量訂單數(shù)量 109四十、Ecshopajax應用討論 109四十一、調(diào)用當前分類或當前分類的下級分類函數(shù) 115四十二、在商品列表顯示購買記錄 118四十三、ajax更新購物車數(shù)量 118四十四、PHP導出excle數(shù)據(jù) 123四十五、頁面多倒計時顯示最新修改 125四十六、關于lbi文件控制原理分析 129四十七、頁面瀏覽歷史圖片調(diào)用分析 130前言2008年我們開始接觸ecshop二次開發(fā),為電子商務中小企業(yè)提供技術服務是我們的宗旨,一路走來,我們服務客戶的同時把我們一些技術解決辦法進行整理、發(fā)布,并通過齊老師的審核,如有錯誤或不嚴謹?shù)牡胤綒g迎網(wǎng)友們拍磚指正。一、商圈和地區(qū)進行關聯(lián)目前系統(tǒng)地區(qū)支持四級分類,但是有時候客戶要求五級比如中國-陜西-西安-碑林-php服務中心商圈實現(xiàn)方法異常簡單我們只需要修改admin下templates下{if$region_typeeq'0'}{$lang.add_country}:{elseif$region_typeeq'1'}{$lang.add_province}:{elseif$region_typeeq'2'}{$lang.add_city}:tonal}:{elseif$region_typeeq'4'}添加商圈:{/if}

四十一行

{if$region_type<4}3改成4

通過以上方式就可實現(xiàn)二、其他頁面顯示購買記錄的函數(shù)functionget_bought_notes(){_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}">ds_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}-->

三、多貨幣解決方案首先在我們的后臺網(wǎng)店設置里要添加匯率轉(zhuǎn)換的功能,如何添加網(wǎng)店功能自己摸索一下,你要把添加的功能插入表里。如圖:

我們的匯率都是和美元進行轉(zhuǎn)換的。開始前臺實現(xiàn):首先我們在首頁加上多語言的鏈接如圖:我們看下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>這個{$url_head}

我是重新建了一個文件,每個文件調(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)都是在每個頁面后面?zhèn)髁艘淮蝕et值,那么在那接這些get值呢,我們肯定要找每個頁面的共同文件,不難想到。我在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]這個代碼大家明白吧,我接到get值后,給了session,如果session不存在話。我們默認就是usd這樣每個頁面都可以獲得當前的session值

。4、我們通過以上操作至少在每個頁面可以搞定客戶選的貨幣是什么,下來我們就考慮如何解決顯示問題,如果每個頁面都修改顯示goods價格那多麻煩啊,我們熟悉ecshop的朋友不難想到我們所有顯示的價格都是在一個函數(shù)里進行里處理,這應該感謝官方的技術人員代碼寫的好。當然是lib_common.php里得price_format()這個函數(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ù)庫獲得我們當時的參數(shù)然后我們計算,同時返回值的時候我們用了系統(tǒng)設置的符號解決問題,前臺就這樣搞定。5、有關交易。后臺的操作我做簡單的介紹,我們只是解決了顯示問題,其實我們實質(zhì)的數(shù)據(jù)還是美元,在我們提交訂單的時候,我們在order_goods表加倆個字段一個是客戶選的貨幣方式,這樣生成訂單后,當我進入我的會員中心我依然可以看到我購買人民幣是多少錢,我們讀取數(shù)據(jù)庫的方式進行換算,另外一個字段是我們換算后的金額。當然我們之前美元的總金額都是在的。在支付的時候我們給貝寶付參數(shù),就是貨幣類型。四、仿淘寶商品詳細頁實現(xiàn)尺碼顏色關聯(lián)顯示庫存效果如下:如何下:

<!--{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}-->

在顯示詳細信息合適的地方加<fontstyle="color:#CCCCCC;">(庫存:<fontid="shows_number">{$goods.goods_number}{$goods.measure_unit}</font>)</font>這是動態(tài)加載庫存的地方

選擇打鉤這個樣式論壇有人發(fā)過也不是很難我不在詳細貼出在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='未設置'}}打開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));}五、仿淘寶商品詳細頁加入購物車效果仿淘寶商品詳細頁加入購物車效果,效果大家應該都知道,如圖:

實現(xiàn)方法:頁面

<ahref="javascript:addToCart({$goods.goods_id},0,1)"><imgsrc="images/bnt_cat.gif"/></a>和默認的鏈接有點點區(qū)別大家對比添加

要顯示的層添加到這個葉面的底部<divclass="cartSure"id="cartSureBox"style="display:none;"><divclass="btn"><ahref="javascript:;"onclick="closeTipBox();">關閉</a></div><divclass="mesgCon"><h3>寶貝已成功添加到購物車!</h3><div>購物車共有<spanid="ECS_GOODS_NUMBER"></span>種商品合計:<spanid="ECS_GOODS_PRICE"></span></div><br><inputtype="image"src="images/btn_pay.gif"/></div></div>我把樣式也貼出來供大家參考.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}文件

修改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');}}添加幾個js函數(shù)/***處理添加商品到購物車的反饋信息*/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();}//沒選規(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;}}}}//購物車提示框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";}//購物車提示框JSfunctioncloseTipBox(){document.getElementById('cartSureBox').style.display="none";}打開flow.php167行左右添加/*取得商品列表,計算合計*/$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ù)以上操作可實現(xiàn)六、ecshop加入購物車效果(各個頁面)1、后臺網(wǎng)店設置購物車確定提示

選擇為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、復制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));//計算上卷元素值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)品購買</span><ahref=\'javascript:cancel_div()\'style="float:right;padding:026px00;background:url(themes/popocai/images/ico_closebig.gif)rightcenterno-repeat;cursor:pointer;">關閉</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">購物車共有<fontstyle="color:#ff6701;"><strong>'+number+'</strong></font>種商品:合計:<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);}到這個common.js里

大家看了會覺的這個函數(shù)很熟悉這就是這個文件里的我只是拿出來修改了一下,當然我們可以自己重新寫彈出層比如用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'];就是加入購物車成功的判斷里面5、我把我們做的樣式和圖片也貼出來不是很漂亮了/*購物車彈出效果*/.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}以上就是我的實現(xiàn)方法七、商品列表頁面“喜歡“功能實現(xiàn)1、通過后臺執(zhí)行sq執(zhí)行ALTERTABLE`ecs_goods`ADD`love`INT(10)NOTNULLDEFAULT'0';在goods表添加一新的字段。2、打開category.php找到category_get_goods這個函數(shù)把要顯示的love也給放進去會程序的網(wǎ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'];_id}">{$goods.love}</font>一定是在foreach循環(huán)里。在這個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));}八、商品列表也顯示獲贈消費積分有的客戶會要求把每個商品的獲贈積分顯示在商品列表頁: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)換為可使用多少積分(原來是可以使用多少錢的積分)*/$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'];在那定義的等帖子。下來就$GLOBALS我說一點:

想搞明白的朋友執(zhí)行這段代碼<?php$xaphp='西安php服務中心';echo$GLOBALS['xaphp'];?>瀏覽器當然會打印出

西安php服務中心

這就是$GLOBALS的作用

“就像大部份的結構化程序,有所謂的全局變量與局部變量,PHP

在這方面也是有相同的處理方式。

PHP

的程序執(zhí)行時,系統(tǒng)會在內(nèi)存中保留一塊全局變量的區(qū)域。實際運用時,可以透過

$GLOBALS["變量名稱"]

將需要的變量取出。在用戶自定的函數(shù)或程序中,就可以用

$GLOBALS

數(shù)組取出需要的變量在ec里大家打開init.php會看到$db=newcls_mysql($db_host,$db_user,$db_pass,$db_name);定義了這樣的類

顧名思義$GLOBALS['db']以上觀點是我個人的理解。十、解決選擇屬性直接就是屬性價格不需要在原價基礎上加價這幾年經(jīng)常遇到這個需求,就是我們后臺添加了屬性前臺選擇屬性,客戶要求這個價格就是屬性里的價格,而不需要在原來基礎上加價。

如圖所示:解決方案:我之前在論壇就有對get_final_price這個函數(shù)分析,他非常重要,我們加入購物車商品價格都要通過他來處理,

比如(促銷,團購,優(yōu)惠。。。。),這樣讓我們想到這個函數(shù)。

lib_common.php打開找到這個函數(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ā)人員可記住這個函數(shù)有很多用處。十一、商品詳細頁下載商品介紹相關圖片此功能一般搞批發(fā)的會有用,他可以點擊copy直接下載商品詳細頁的商品描述相關圖片。因為代碼設計到具體的字符串切分,所以每個網(wǎng)店形式不一定一樣,我貼出來供大家參考應用。1、打開goods.dwt適當位置加<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");header("Content-Type:application/unknown");die($zip->file());}以上方式即可實現(xiàn)點擊copy立即打包下載描述的所有圖片。十二、實現(xiàn)后臺二次開發(fā)后功能模塊仍然可以分配權限對ec后臺進行二次開發(fā)在可以在左面菜單欄加入新的功能模塊有關如何加入我在之前帖子有說過今天我們要分析的是功能模塊加了以后如何在管理員列表也可以實現(xiàn)管理權限分配的管理。

首先我們了解一下ecs_admin_action這個表這個表有3個字段action_id自增id,parent_id分類idaction_code是我們左面的所有功能。

下來我們了解ecs_admin_user表的action_list字段

大家會發(fā)現(xiàn)這里面存放具有管理權限的所有模塊。

例:在左面菜單欄加入

信--》短信發(fā)送這個功能。如何讓左面顯示我不在解釋。我們直接開始分析正題2、打開ecs_admin_action表插入sms_manage這一條數(shù)據(jù)parent_id默認為0就可以。因為頂級分類也就是我們分類的大模塊他的parent_id都是0的.ok下來我們插入第二天數(shù)據(jù)sms_send這時候你的parent_id應該是剛才那條數(shù)據(jù)的action_id以上為無限極分類的原理大家應該了解。3、打開inc_priv.php權限對照表我們加入

//短信管理

$purview['02_sms_my_info']

='sms';記住這里面的02_sms_my_info要和inc_menu里

$modules['14_sms']['02_sms_my_info']

='sms.php

'02_sms_my_info'一致。打開priv_action.php

/*權限管理的一級分組*/

$_LANG['goods']='商品管理';

$_LANG['cms_manage']='文章管理';

$_LANG['users_manage']='會員管理';

$_LANG['priv_manage']='權限管理';

$_LANG['sys_manage']='系統(tǒng)設置';

$_LANG['order_manage']='訂單管理';

$_LANG['promotion']='促銷管理';

$_LANG['email']='郵件管理';

$_LANG['templates_manage']='模板管理';

$_LANG['db_manage']='資料庫管理';

$_LANG['sms_manage']='短信管理';首先加入這一條

然后在底部加入

//短信管理

$_LANG['sms']

='賬號信息';ok

,實現(xiàn)我們的功能。下來去管理員列表點開權限列表看一下是否成功。十三、ecshop調(diào)用bbs數(shù)據(jù)前提保證bbs的表和我們ecshop的表在一個庫的情況下

1、$subject_list=$db->getAll("selecttid,subject,datelinefromcdb_postwherefid=54limit0,10");foreach($subject_listas$idx=>$value){

$subject_list[$idx]['subject']=sub_str($value['subject'],8);//字符串截取

$subject_list[$idx]['dateline']=date($GLOBALS['_CFG']['date_format'],$value['dateline']);//格式化時間}$smarty->assign('subject_list',$subject_list);2、<!--{foreachfrom=$subject_listitem=list}--><li><ahref="bbs/forum.php?mod=viewthread&tid={$list.tid}"target="_blank">{$list.subject}</a><span>{$list.dateline}</span></li><!--{/foreach}-->貼到模板。十四、整理了一個獲取用戶等級的函數(shù)獲取用戶等級的函數(shù)

有時候會用到比如在商品評論列表的用戶名旁邊顯示該用戶的等級functionget_user_rankname($user_id){

$infos=$GLOBALS['db']->getRow("select*from".$GLOBALS['ecs']->table('users')."whereuser_id='$user_id'");

if($infos['user_rank']>0)

{

$sql="SELECTrank_id,rank_name,discountFROM".$GLOBALS['ecs']->table('user_rank').

"WHERErank_id='$infos[user_rank]'";

}

else

{

$sql="SELECTrank_id,rank_name,discount,min_points".

"FROM".$GLOBALS['ecs']->table('user_rank').

"WHEREmin_points<=".intval($infos['rank_points'])."ORDERBYmin_pointsDESC";

}

if($row=$GLOBALS['db']->getRow($sql))

{

$rank_name

=$row['rank_name'];

}

else

{

$rank_name=$GLOBALS['_LANG']['undifine_rank'];

}

return$rank_name;}十五、商品頁顯示具體屬性排序在實際使用當中往往客戶會有這樣那樣的需求,需要我們技術人員來完善。如:

客戶想把20包裝排前面,ec默認是按照價格來排的當然不能滿足所以我們進行修改程序。

1、ALTERTABLE`ecs_goods_attr`ADD`attr_sort`VARCHAR(10)NOTNULL;復制代碼屬性表加a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論