ecshop
ecshop
ECShop是一款B2C獨立網(wǎng)店系統(tǒng) ?,適合企業(yè)及個人快速構(gòu)建個性化網(wǎng)上商店。系統(tǒng)是基于PHP語言及MYSQL數(shù)據(jù)庫構(gòu)架開發(fā)的跨平臺開源程序。最新版本為2.7.3。中文名 ECShop?
外文名 ECShop?
主要產(chǎn)品 網(wǎng)店系統(tǒng)?
最新版本 2.7.3?
開發(fā)者 上海商派網(wǎng)絡(luò)科技有限公司
ecshop系統(tǒng)
ECShop是上海商派網(wǎng)絡(luò)科技有限公司(ShopEx)旗下——B2C獨立網(wǎng)店系統(tǒng),適合企業(yè)及個人快速構(gòu)建個性化網(wǎng)上商店,系統(tǒng)是基于PHP語言及MYSQL數(shù)據(jù)庫構(gòu)架開發(fā)的跨平臺開源程序。
ECShop悉心聽取每一位商家的需求與建議,不僅設(shè)計了人性化的網(wǎng)店管理系統(tǒng)幫助商家快速上手,還根據(jù)中國人的購物習慣改進了購物流程,實現(xiàn)更好的用戶購物體驗。
ECShop網(wǎng)店系統(tǒng)無論在產(chǎn)品功能、穩(wěn)定性、執(zhí)行效率、負載能力、安全性和SEO支持(搜索引擎優(yōu)化)等方面都居國內(nèi)同類產(chǎn)品領(lǐng)先地位,成為國內(nèi)最流行的購物系統(tǒng)之一。
========
ecshop中 dwt, lbi 文件詳解
Ecshop包括的文件夾有admin、api、cert、data、images、includes、js、 languages、plugins、temp、theme、wap、widget這些文件夾,和根目錄下的所有.php文件。這些文件和文件夾組成了整 個ecshop。如果從軟件工程角度分析ecshop的話,ecshop的二級可以看成admin和前臺兩個部分。admin主要是面向服務(wù)端的,而前臺 是面向客戶端的,這是這兩個部分的最明顯的差別。下面給出ecshop的二級流程圖:
此二級流程圖給出了admin模塊、前臺顯示模塊和數(shù)據(jù)庫模塊之間的一個關(guān)系。從上面的圖示可以看出,admin模塊要對數(shù)據(jù)庫進行讀和寫,這里的 讀和寫組成了整個的后臺的管理,包括商品的增加和刪減、留言的管理、訂單的處理等等。前臺模塊也要對數(shù)據(jù)庫進行讀和寫,它的讀寫主要是完成交易的過程,寫的內(nèi)容基本都是和商品數(shù)量、點擊數(shù)量這些在商品交易中一定要改變的數(shù)字。在admin模塊也可以對前臺顯示部分進行寫,這個寫的過程主要是完成前臺顯示方式的改變,比如admin模塊可以選擇模板;同樣也可以改變每個小模塊在某個頁面中是否顯示,以及顯示的位置(如果顯示)。
?
關(guān)于dwt文件和lbi文件
1,dwt 文件是網(wǎng)頁模板文件(Dreamweaver Template), 在創(chuàng)建網(wǎng)站的多個網(wǎng)頁的時候,通常可以將網(wǎng)頁的共同部分創(chuàng)建成為一個模板, 然后給多個網(wǎng)頁調(diào)用, 以實現(xiàn)網(wǎng)頁代碼的重復(fù)利用. 制作模板的時候, 用戶可以自定義的模板可編輯區(qū)域和非可編輯區(qū)域, 可編輯區(qū)域?qū)⒃谡{(diào)用模板的網(wǎng)頁中再次填充代碼.
2,lbi庫文件時Dreamweaver中的庫文件無論是dwt,庫文件還是代碼片段都是將可以重復(fù)使用的代碼單獨放在一個模板文件中然后再要使用的地方調(diào)用,他們的區(qū)別是 dwt是將多個不同位置的重復(fù)模塊保存成一個dwt文件然后重復(fù)利用,lbi是將一個模塊保存成庫文件
3,如何建立dwt文件 dw里文件-新建,新建文檔-空白頁-html模板-然后ctrl+s(如果沒建立站點那么要在保存類型中選擇 .dwt)
4,創(chuàng)建lbi文件,ctrl+n(新建)---空白頁---庫項目 然后保存到庫路徑,或者再設(shè)計頁面選中要保存成庫項目的部分選擇修改-庫-增加對象到庫 ?或者直接拖拽選中部分到庫中
Images文件夾:
這個文件夾下有子文件夾,在這些子文件夾下面存放著當前網(wǎng)站商品的原始圖片和縮略圖。這些子文件夾命名有規(guī)律的,它們的文件名是它們目錄下商品加入 的年月份。也就是說在同一個月份加入的商品,它們的圖片是在同一個文件夾下的,且這個文件夾的名字就是當前的年月份。后臺每添加一個帶圖片的商品,這邊都會在某個文件夾下出現(xiàn)提交圖片的副本。
Data文件夾:
這個文件夾是包括一些固定的數(shù)據(jù),比如固定的配置、圖片等等。在data這個文件夾下的config.php記錄了數(shù)據(jù)庫的一些固定的信 息,afficheimg文件夾下存放這首頁最中間的flash的圖片源。實現(xiàn)將afficheimg文件夾下的圖片加載到首頁的flash中是通過文件 夾flashdata下面文件夾dynfocus中的JavaScript來實現(xiàn)的。文件夾brandlogo下存放這有品牌商品的公司的logo,另外文件夾captcha下存放這驗證碼的背景圖片。
Theme文件夾:
頁面的顯示是有theme這個文件夾全權(quán)負責的。而這些準備的數(shù)據(jù)是怎么在theme下的.dwt中顯示的呢?數(shù)據(jù)是通過smarty加載進去的。在根目錄下每個.php文件中都會有類似$smarty->assign(’page_title’, $position['title']);這樣的句子,這樣page_title在對應(yīng)的dwt文件中就可以作為一個變量使用了。這樣就將php文件很dwt文件很好的結(jié)合好了。
下面稍微說一下dwt這個文件。這個文件中大部分的信息是自動生成的。在dwt文件中都會看到這樣的塊,這個快就是用來確定每個模塊顯示的位置的,如果在后臺將某個模塊選擇顯示在“左邊區(qū)域”,那么這個模塊的代碼會在上面的這個區(qū)域生成。當然在dwt文件中我們也會到處看到這里面的代碼全都是自動生 成的,要改也只能該.lbi文件。還有就是在出現(xiàn)之前,這兩個標志之間不能直接編輯代碼,要加入自己的代碼必須要在和下一個 BeginLibraryItem之前插入。
程序:
程序主要是包括(這里說的是關(guān)于前臺的)根目錄下的所有的php腳本、includes,js文件夾,這些所有的腳本完成了前臺顯示的數(shù)據(jù)準備。所 以它們在整個ecshop的結(jié)構(gòu)中占著相當重要的地位,對ecshop的修改也主要集中在這些腳本中,這些腳本的具體分析會在后期中一一給出。
在上一篇中給大家?guī)砹薳cshop的總體的框架。從總體上看ecshop,相信大家的思路應(yīng)該很清楚。作為一個對開源項目修改者你來說,能對ecshop有個初步的了解就行了,下面我會給大家?guī)砦以谛薷膃cshop的過程中的一些體會。
記得在上一篇中我們聊到了Adobe的模板。下面我們來根據(jù)ecshop跟大家討論一下模板。說到模板,這就是ecshop前臺顯示的主要文件,如 果你能很好理解theme下模板文件和樣式表文件,對于ecshop前臺顯示應(yīng)該沒有任何問題了。Ecshop中頁面到底是怎么顯示的呢?這個問題我們先放在一邊,我們先研究一下ecshop是怎么將一系列從數(shù)據(jù)庫中讀取出來,然后傳到顯示頁面中的。要解決這個問題我們要用根目錄下的index.php和 theme/default下的index.dwt來作為用例。之所以用對應(yīng)的兩個文件夾,是因為在index.dwt中要顯示的數(shù)據(jù)是通過smarty 從index.php中加載進來的。在index.php中有如下代碼:
$position = assign_ur_here();
$smarty->assign('page_title', $position['title']); // 頁面標題
$smarty->assign('ur_here', $position['ur_here']); // 當前位置
首先它是調(diào)用函數(shù)assign_ur_here,這樣得到了變量$position,在變量$position中有title和ur_here這兩個變量。在index.dwt中會有如下代碼:
<title>{$page_title}<title>
?
是的,一旦$smarty->assign(’page_title’, $position['title'])執(zhí)行完,$page_title就會在index.dwt中成為一個可以使用的變量。那么到目前為止我們知道如何從php腳本中往dwt文件中傳我們需要的變量了。smarty就是通過這種機制將需要顯示的內(nèi)容傳到對應(yīng)的dwt文件中,這樣就實現(xiàn)了頁面與內(nèi)容的分離。Php腳本中的數(shù)據(jù)我們已經(jīng)有辦法在dwt文件中得到了,下面就是要解決如何顯示這些數(shù)據(jù)。凡是通過smarty加載到dwt文件中的變量,在顯示的 時候都是加上{}來顯示的。如果加載過來的是數(shù)組那么就要通過smarty的循環(huán)來顯示,如果我傳進來一個數(shù)組是 $school并且數(shù)組的每個條目中有name,那么下面的代碼就是實現(xiàn)在頁面中顯示數(shù)組的每個條目的name。
Foreach($school as $k)
{
echo $k[‘name’] . ‘ ’;
}
這樣就會在頁面中將數(shù)組的內(nèi)容全部打印出來了。
下面我們來舉個例子來說明一下dwt到底是怎么顯示的。
在index.php中的某個地方寫上 smarty->assign(‘test’, ‘This is just a test!’);
然后在index.dwt中某個地方寫上{$test},然后在首頁中就會有“This is a test!”。當然它顯示的地方跟你把{$test}放在哪里有關(guān)系。當然這個位置是有規(guī)定的,dwt中不是任何的地方都可以編輯的,有些地方是不能動的,這些我們會在后面一一給出講解。這個時候如果在你的首頁中沒有出現(xiàn)“This is a test!”這個內(nèi)容,那么你也不要擔心,因為ecshop中默認的cache是開著的,不能顯示肯定是cache的問題,這個我們在后面也會給出講解。今天就到這里,今天我們討論了如何往dwt中傳參數(shù)和參數(shù)的顯示。下一次會給出上面遺留問題的講解,Thanks。
大家好,今天我們來解決上次遺留下的問題。上次我們談到了如何從php腳本中往dwt模板中傳參數(shù),同時我們留下了兩個問題,第一是dwt中有的地方是不可以編輯的;第二是往dwt中傳參數(shù)并且讓它顯示,它不一定顯示出來。
首先我們來討論一下第一個問題——為什么有的地方不可以編輯。我們通過討論index.dwt來分析一下這個問題的原因。在index.dwt中我們會看到好多形如
這樣的語句。如果對ecshop的后臺的管理有點了解的朋友們對“左邊區(qū)域”這幾個字應(yīng)該很熟悉吧!不錯,在后臺的模板管理->設(shè)置模板中你會看到如下的圖片
從表面上看,大家都應(yīng)該知道,比如“商品分類樹”是在整個頁面的中間區(qū)域顯示。那么為什么在后臺這邊重新選擇一下并且確定,在頁面顯示就會按照你的選擇來顯示呢了?它的實質(zhì)是這樣的,上面每個模塊是對應(yīng)一個庫文件(就是theme下library下的lbi文件),當你把上面的這些按照你的布局設(shè)置 好后點擊確定,程序就會按照你的布局的選擇將每個lbi文件的內(nèi)容寫入到index.dwt中,那么lbi文件中的內(nèi)容往哪里寫呢,這個時候上面的
這句話就起到作用了,比如上面“銷售排行”是選擇的右邊區(qū)域,那么當你確定以后,程序會對index.dwt重寫一邊,其中“銷售排行”對應(yīng)的 lbi(就是top10.lbi)中的內(nèi)容會被完全的讀取并且寫到index.dwt中和之間。那么這個時候大家可能有一個疑問,如果有很多的內(nèi)容要往右 邊區(qū)域?qū)?#xff0c;那哪個先寫呢?上面的圖中有個“序號”,這個就是決定寫的順序的。下面是寫之后index.dwt文件中和之間的一段代碼:
?
<div class="box">
?<div class="box_2">
? <div class="top10Tit">div>
? <div class="top10List">
? ?<ul>
? ??
? ? <li><img src="../images/top_{$smarty.foreach.top_goods.iteration}.gif"> <a title="{$goods.name|escape:html}" href="{$goods.url}">{$goods.short_name}a>
? ??
? ?li>ul>
? div>
?div>
div>
<div class="blank5">div>
??
好的,到了這里相信大家應(yīng)該清楚很多了,那么到底是為什么index.dwt中有些的地方是不可以編輯的。大家想一想上面這段代碼是從哪邊而來的,對的,是從top10.lbi中讀取出來的,然后寫到這里的,如果你編輯這里,然后下次再重新布局后,這邊的內(nèi)容不是要被重寫掉了嘛!所以在 index.dwt中類似和之間的內(nèi)容是動態(tài)生成的,是不可編輯的,如果真的想編輯這邊的內(nèi)容,就就編輯對應(yīng)的lbi文件。
相信大家已經(jīng)清楚,為什么dwt文件中部分地方是不可編輯的。那么今天就和大家談到這里,下次我們來研究一下cache的問題。我感覺這個很是頭疼(如果你自己添加了session)。
上次我們主要討論了關(guān)于模板的問題,最后我們留下了一個問題——cache的問題。我覺得這個問題到目前位置先不要討論好,再往后一點我們再來分析這個問題。到現(xiàn)在我們知道了模板的一些操作了,但是我們還是很郁悶,因為我們只是在ecshop的前臺框架的控制之下。那么我們?nèi)绾文軌蛎撾x出來呢?如果我們能做到自己添加屬于自己或者可以放自己想要放的東西的模板,那么應(yīng)該算是到了一個更高的臺階來看ecshop了。
要做到添加一個模板就必須做到前臺可以顯示這個模板,后臺可以編輯這個模板。下面我們一步一步教大家怎么添加一個屬于自己的模板。在添加之前我們先 稍微分析一下,對以一個模板,在前臺一定有一個php文件和它對應(yīng)(很顯然這個php文件就是實現(xiàn)給這個模板文件傳送數(shù)據(jù)的)。并且在后臺可以編輯這個模板對于的模塊,也就是在模板管理——設(shè)置模板中有你加的模板的選項。下面我們來添加一個home模板。首先在根目錄下新建home.dwt和 home.php。然后將index.dwt和index.php中的內(nèi)容分別拷貝到home.dwt和home.php中。對于這個模板的內(nèi)容完全由你 自己決定,你的內(nèi)容就會決定你要怎么修改home.dwt和home.php。當然這個模板的內(nèi)容是受限制的,首先要home這個模板的候選的庫文件是存在的。這個是什么意思呢?這句話的意思就是對于每個模板文件,可以調(diào)用的庫文件是固定的,并且這些可以調(diào)用的庫文件在文件admin/includes /lib_templete.php中定義的。首先要在后臺將home這個模板放入到可設(shè)置內(nèi)容的模板中,部分代碼如下:
/* 可以設(shè)置內(nèi)容的模板 */
$template_files = array(
'home.dwt',
'index.dwt',
'zhiku.dwt',
'article.dwt',
'article_cat.dwt',
'brand.dwt',
'category.dwt',
'user_clips.dwt',
'compare.dwt',
'gallery.dwt',
在上面的代碼中就將home.dwt加入到后臺的可編輯模板中,這個時候你就可以在后臺的模板管理->設(shè)置模板中編輯home模板了。但是到 這里我們發(fā)現(xiàn)一個很小的問題,那就是這個home模板在后臺是顯示成什么名字。其實這個很簡單,只要在文件language/zh_cn/admin /template.php中添加$_LANG['template_files']['home'] = ‘home模板’;這樣的語句,那么在后臺看到的home模板的名稱就是“home模板”,當然這里也可以設(shè)置成其他的名稱。在上面我們有說到每個模板可以調(diào)用的庫文件是固定的,既然說是固定的,那應(yīng)該是哪些呢?就拿index來說吧,在文件admin/includes /lib_templete.php中有下面這樣的代碼:
'index' => array(
'/library/ur_here.lbi' => 0,
'/library/search_form.lbi' => 0,
'/library/member.lbi' => 0,
'/library/new_articles.lbi' => 0,
'/library/success_article.lbi' => 0,
'/library/dynamic_article.lbi' => 0,
'/library/school_article.lbi' => 0,
'/library/category_tree.lbi' => 0,
'/library/top10.lbi' => 0,
'/library/invoice_query.lbi' => 0,
'/library/recommend_best.lbi' => 3,
'/library/recommend_new.lbi' => 3,
'/library/recommend_hot.lbi' => 3,
'/library/recommend_promotion.lbi' => 4,
'/library/group_buy.lbi' => 3,
'/library/auction.lbi' => 3,
'/library/brands.lbi' => 0,
'/library/promotion_info.lbi' => 0,
'/library/cart.lbi' => 0,
'/library/order_query.lbi' => 0,
'/library/email_list.lbi' => 0,
'/library/vote_list.lbi' => 0
),
那么這邊枚舉到的庫文件,對于index.dwt都可以調(diào)用的。依葫蘆畫瓢,home.dwt需要調(diào)用哪些庫文件,那么就對應(yīng)上面這個寫就是了,相 信大家都有這個水平。好的,到目前為止一個模板文件添加成功了,那么它在瀏覽器中的顯示就要通過后臺的設(shè)置模板來確定了。好的,添加一個自己的模板我就說到這里,我們下期繼續(xù)討論ecshop。Thanks!!!
========
一個相關(guān)資源下載
http://pan.baidu.com/s/1o7OEMc6
jingdong_jb51.rar
總結(jié)
- 上一篇: 一款名为Blue_Moon的后台模板的初
- 下一篇: MySql外键学习总结