Ecshop 二次開發筆記

一、由於官網下載每次都要輸入名字和電話,稍微有點麻煩,因此傳到網盤上去了,gbk版本就是隻有中文版,utf8版本就是又有中文版又有英文版
ecshop gbk版本下載地址 http://pan.baidu.com/s/1xiQAl
ecshop utf8 版本下載地址http://pan.baidu.com/s/1O5sC  javascript


二、Strict Standards: Non-static method cls_image::gd_version() should not be called statically in C:Apache2.2htdocsyecshopincludeslib_base.php on line 347
找到include/cls_image.php中的678行,發現gd_version()方法未聲明靜態static,因此會出錯。這時候只要:
將function gd_version()改爲static function gd_version()便可。 這個是版本兼容問題,新版的php要求更嚴格php

三、是否支持JPEG 顯示不支持 這個是環境檢查代碼的一處錯誤 java

install/includes/lib_installer.php中第98行,JPEG寫成了JPG,正確的應該是:mysql

$jpeg_enabled = ($gd_info['JPEG Support'] === true) ? $_LANG['support'] : $_LANG['not_support'];

不改的話其實對功能也沒有影響。sql

四、Strict standards: Only variables should be passed by reference in D:\wamp\www\ecshop\includes\lib_main.php on line 132 
數據庫

解決辦法:
D:\wamp\www\ecshop\includes 下cls_template.php 418行
$tag_sel = array_shift(explode(' ', $tag));apache

$tag_sel = array_shift(explode(' ', $tag));

改爲: 
數組

$tag_arr = explode(' ', $tag); 
$tag_sel = array_shift($tag_arr);

修改完以後問題仍是沒有最終解決,由於仍是有其餘的地方報一樣的錯誤,這是因爲ecshop使用的是老版本的php,而php5.3以後就再也不支持上面的寫法。 
this

解決辦法之一就是給wampserver配置多個版本的php,可是這樣比較麻煩,最後找了個偷懶的辦法,下載老版本的wampserver,找一個php的版本爲5.2的,問題最終是解決了,同一個操做系統下能夠裝多個版本的wampserver。
我把老版本的wampserver傳到了百度的雲盤裏。地址以下:
http://pan.baidu.com/s/1FzTmK
版本信息爲:php5.2.6,mysql5.0.51b,apache2.2.8 url

4.1 Strict standards: Redefining already defined constructor for class alipay

緣由是PHP4中構造方法是一個與類同名的方法,而從PHP5開始,用__construct()作爲構造方法,但仍然支持PHP4的構造方法,若是同時使用並且同名方法在前的話,則會報錯,將同名的方法放到構造方法以後便可解決。

class alipay
{
    function __construct()
    {
        $this->alipay();
    }
    function alipay()
    {
    }

4.2 Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings

解決辦法是編輯php.ini文件,搜索 date.timezone 前面的 分號去掉。date.timezone = "Asia/Shanghai",修改完後 重啓 apache

五、作團購時須要增長一個圖片字段,一開始叫作googs_img, 可是以後訪問首頁時報錯:Column 'goods_img' in field list is ambiguous,這個錯誤就是因爲不一樣表中有相同字段,查詢的時候又在一塊兒沒有區分。解決辦法就是修改下新增字段的名字好比改爲group_goods_img 

六、smarty中獲取遍歷次數和截取字符串:

<div class="head mt20">熱銷商品排行</div>
<div class="body" style="padding:0; width:228px">
	<ul class="sales-ranking">
		<!-- {foreach name=top_goods from=$top_goods item=goods}-->
			<li><a class="num-{$smarty.foreach.top_goods.iteration}" href="{$goods.url}">{$goods.goods_name|truncate:13}</a></li>
		<!-- {/foreach} -->
	</ul>
</div>

七、smarty中使用判斷語句,包括if,else,elseif,相等,不相等

<!-- {if $group_buy.status eq 0} 未開始 -->
	{$lang.gbs_pre_start}
<!-- {elseif $group_buy.status eq 1} 進行中 -->
	<a class="buy-01" href="javascript:void(0);" onclick="gb_submit()"></a> 
<!-- {else} 已結束 -->
	<span class="buy-02"></span> 
<!-- {/if} -->

<!-- {if $group_buy.status ne 1} 非進行中 -->
	<em class="gray-bg"></em>
<!-- {/if} -->

大於 gt,小於lt,大於等於gte,小於等於lte

八、"high" == 0 居然是true,不能這樣用, 判斷某個字符串不存在的時候,能夠賦值爲空,不要賦值爲0,好比下面的代碼:

$_REQUEST['level'] = isset($_REQUEST['level']) ? $_REQUEST['level'] : 0;

能夠寫爲

$_REQUEST['level'] = isset($_REQUEST['level']) ? $_REQUEST['level'] : "";

不然,賦值爲0以後,在進行字符串判斷的時候都是true,好比:

$level=0
{if $level eq "high"} 爲true

緣由是php在判斷字符串與整數是否相等時會先進行類型的轉換,字符串轉換爲整數時是0,0==0因此爲true

九、smarty中判斷數組長度是否爲0

{if $specification|@count neq 0 }
{/if}

十、日期時間格式處理

$row['add_time']     = local_date('Y-m-d H:i:s', $row['add_time']);

十一、增長錨點,使得評論和諮詢翻頁時仍是能跳到第一條內容,href和onclick能夠同時使用

<div class="comment-box02" id="comment_body">
<a href="#comment_body" onclick="{$pager.page_first}">首頁</a>

十二、ecshop有些配置參數寫在了data/config.php上面,好比 DOMAIN,數據庫參數等。這個文件是安裝時經過lib_installer.php 生成的

相關文章
相關標籤/搜索