2015-11-05 45 views
2

我想在prestashop admin中使用backOfficeHeader鉤子添加JavaScript文件,但沒有任何事情發生。我的代碼如下。addJS函數不適用於prestashop中的admin

public function install() 
{ 
    if (!parent::install() 
     || !$this->registerHook('backOfficeHeader')) 
     return false; 

    return parent::install() && 
    $this->registerHook('backOfficeHeader'); 
} 

public function hookBackOfficeHeader() { 
    $this->context->controller->addJS(_MODULE_DIR_.$this->module->name.'js/hs_custom.js'); 
} 

回答

0

你試過檢查addJS路徑嗎?我認爲沒有其他的JS文件可以工作了。 嘗試使用$ this - > _ path。

$this->context->controller->addJS($this->_path.'views/js/hs_custom.js'); 

1)輸出路徑並檢查它是否有效。 2)重新載入頁面並檢查網絡。頁面加載你的腳本或不? 3)如果你用鉤子改變某些東西,記得要重新設置模組。 4)檢查模塊鉤子。

2

如果您使用PS 1.5或1.6,則應使用掛鉤「actionAdminControllerSetMedia」。

您的模塊安裝程序應檢查使用哪個prestashop版本,然後註冊所需的掛鉤。

if (version_compare(substr(_PS_VERSION_, 0, 3), '1.5', '<')) 
     $this->registerHook('BackOfficeHeader'); 
else 
     $this->registerHook('actionAdminControllerSetMedia'); 

然後,你需要addJS在其版本格式每個鉤: PS> = 1.5

public function hookActionAdminControllerSetMedia($params) { 
    $this->context->controller->addJS($this->_path.'views/js/hs_custom.js'); 
} 

PS < = 1.4

public function hookBackOfficeHeader($params) { 
    Tools::addJS($this->_path.'views/js/hs_custom.js'); 
} 
-1

對我來說,「這 - > _路徑「dosn't工作。我的解決方案是使用$ _SERVER ['DOCUMENT_ROOT']

public function hookActionAdminControllerSetMedia($params) 
{ 
    // add necessary javascript to products back office 
    if($this->context->controller->controller_name == 'AdminProducts' && Tools::getValue('id_product')) 
    { 
     $this->context->controller->addJS($_SERVER['DOCUMENT_ROOT']."/modules/apl/views/js/jquery.ui.touch-punch.min.js"); 
    } 
} 
相關問題