程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> shopnc二次開發(二),shopnc二次開發

shopnc二次開發(二),shopnc二次開發

編輯:關於PHP編程

shopnc二次開發(二),shopnc二次開發


一般來說二次開發,多數就是修改界面和增加功能這兩個需求

先說修改界面

mvc 架構的程序,在界面這裡,基本就是調用數據。

常見的界面數據構架有三種

1.是業務端或者是控制端數據驅動界面,基本上是後台輸出啥數據,界面表現啥數據。這樣麻煩的地方在於如果要更換模板的話動刀會動的比較大,除非沒有更換模板的需求。如果不修改控制端的數據的話,那麼界面設計這裡受到的限制就比較多。

2.是界面驅動數據,界面自定義調用數據,多數的 cms 基本都是這樣搞的,通過標簽或者定義個通用的 php 調用數據函數來獲取數據。這樣對界面設計這裡比較友好,但是切圖套代碼的話就會比較麻煩些。

3.第三種難度有點大,就是後台通過所見即所得的模式,定義前端調用模塊,並通過系統配置或者手動配置來定義數據,然後生成 html 數據,前台一次性讀取即可,設定合理緩存的間隔即可。像淘寶,shopex就是這樣的模式,對後台開發的壓力比較大。

shopnc的程序屬於第一種,後台數據驅動界面的。所以要改界面,通常要改控制器和視圖兩個地方,最好是記錄好修改的文件,否則將來升級了,源文件被替換了,就會非常麻煩。

shopnc的url通常是這樣的

http://localhost/shopnc/shop/index.php?act=show_groupbuy&op=index

act 參數代表的是控制器,而 op 則代表的是控制器中的業務函數名稱

回顧下 shopnc 的目錄結構,我們到控制器目錄中尋找 show_groupbuy.php ,這就是控制器的業務邏輯

簡單的看下代碼

class show_groupbuyControl extends BaseHomeControl {

    ...

}    

控制器的名稱跟一個 Control 字符串並繼承於 BaseHomeControl

而 op 就是 show_groupbuyControl 類中的函數

/**
 * 默認跳轉到進行中的團購列表
 */
public function indexOp() {
    $this->groupbuy_listOp();
}

命名以 url 中的 op 參數加 Op 字符串組合而成

如果要更改前台顯示的數據,則需要找到對應的控制器和函數,修改其中的代碼

前台的模板也有規律

templates/default 目錄下的文件夾功能含義如下:

buy                    購買功能模板,比如購物車、訂單等模板

css                     樣式文件夾

home                  前台展示功能模塊的模板都在這裡

images                模板圖片文件夾

layout                 布局文件夾,如果要找各個功能區的頭文件都在這裡

member              會員中心模板

seller                  賣家中心模板

sns                    sns 功能模板

store                  賣家店鋪模板

到對應的文件夾中尋找相關的文件模板即可修改視圖邏輯

剛開始找對應視圖可能有點蒙,因為視圖和控制器並不對應,不過從 op 參數上判斷也比較好找,當然還是建議從控制器代碼中找

找到對應 op 函數

在函數最後末尾,找到類似 Tpl::showpage('index'); 的字樣,有這樣的字樣就代表從對應的文件夾中調用 index 的視圖,所以我們找到 index.php 就是對應的視圖文件了

如果沒有 Tpl::showpage('index'); 的字樣,通常是調用了其他函數或者不輸出視圖文件,比如說直接輸出字符串或者輸出 json 。

找到了視圖文件,就需要找到對應的數據顯示模塊才可以修改。

我們先返回找到對應的控制器看下代碼,我們找到首頁文件,以團購為例

//團購專區
Language::read('member_groupbuy');
$model_groupbuy = Model('groupbuy');
$group_list = $model_groupbuy->getGroupbuyCommendedList(array(), null, '', '*', 4);
Tpl::output('group_list', $group_list);

除去注釋的第一句,不用看也能猜出來,是調用語言文件的

第二句是調用 model 的,model 的位置在上層目錄中的 data 裡,而 model 文件的文件名就是 Model('groupbuy'); 中的 groupbuy 加上 .php 後綴

第三句調用 model 中的函數獲取想要取得的數據

第四句則是將已取得的數據賦值給模板中的變量 group_list 

我們打開視圖文件,找到 group_list 即可定位模板中要找的位置了,而模板都是純 php 語法,直接就可以修改,記得要備份啊!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved