2013-07-13 58 views
1

PrestaShop的默認前端辦公模板和控制器我想重寫PrestaShop的默認前端辦公模板和控制我的新創建的模塊中,而無需修改PrestaShop的內部代碼/結構。如何重寫模塊

實施例:

我已創建在/我想要使用PrestaShop的地址的形式(address.tpl)模塊文件夾一個模塊即「MyModule的」。

參見:http://demo-store.prestashop.com/en/address

我想通過提供一些額外的字段/功能來增強地址表單,但不改變prestashop的核心功能。

那麼,我怎樣才能在我的模塊中覆蓋它的控制器/主題/模板?我已經搜索在谷歌很多關於這一點,但沒有發現任何東西:(

任何幫助,將不勝感激。

回答

1

模塊可以工作像你只有一個要求,如果有該template/controller,使您能夠運行內部的HOOK您的自定義功能。你看,如果你有通過觀察名單上的某個地方掛鉤的模塊的機會裏表現

backoffice > modules > position 

地址控制器還沒有得到任何掛鉤,如果我記得不錯,所以你有3種方式來編輯其功能:

  1. 通過大量使用jquery/ajax調用來執行您需要的操作,進行(imho)糟糕的客戶端修改。通過使用hookHeader()函數,使用僅在標題中添加js腳本的模塊放置代碼。由於該鉤子始終在所有站點中調用,因此可以利用地址模板中缺失的鉤子。 http://www.prestashop.com/forums/topic/218291-create-custom-and-new-hook-in-ps-15/

  2. 使用的Prestashop框架驚人的覆蓋特性來修改你放置你的prestashop_root/override/controllers/front/AddressController.php和內內的控制器文件所需要的:

  3. 按照以下步驟添加自己的控制器內的掛鉤和模板您的/prestashop_root/themes/my_theme/address.tpl。這樣,您就可以在不丟失原有功能的情況下覆蓋Controller的任何功能,並且如果您需要升級安裝,則只需檢查在改寫文件中更改的功能,就像您對模塊所做的那樣。

+0

在我的模塊中,我重寫地址控制器。即我像'mymodule中/清除/控制器/正面/ addresscontroller.php'並調用模板'address.tpl'在'mymodule中/清除/視圖/正面/ address.tpl'但文件夾結構造就了其無法正常工作 – Sky

+0

使用' setTemplate'我想執行我的'address.tpl'文件:'$這個 - > setTemplate;' – Sky

+0

不能覆蓋控制器(__ __ PS_BASE_URI '模塊/ mymodule中/清除/視圖/正面/ address.tpl'。)在模塊內部,默認的框架自動載入功能會過度。該自動加載總是會被覆蓋文件夾中並通過「ControllerName」裏原來的控制器其名爲「ControllerNameCore」,它永遠不會搜索模塊文件夾內的控制器去重寫一個類名尋找它搜索控制器。你必須北醫三院文件在其右側的目錄,以便:address.tpl進去/themes/default/address.tpl和你addresscontroller必須放在/override/controllers/front/AddressController.php。:) – kawashita86