2016-03-25 32 views
1

私は自分の特定の検索フォームを表示するためのフックを使ってプリstashopモジュールを作成しました。Prestashop 1.6カスタムモジュール:addJS/addCSSが正しく動作しません。

public function hookDisplayTopColumn($params) 
{ 

    $this->context->controller->addCSS($this->_path.'css/modelfilter.css', 'all'); 
    $this->context->controller->addJS($this->_path.'js/modelfilter.js'); 


    $marque = $this->getSubCategories($this->marquesCategory); 

    $this->context->smarty->assign(array(
     'marques' => $marque, 
    )); 
    return $this->display(__FILE__, 'form_model.tpl'); 
} 

JSファイルとCSSファイルは含まれません。なぜ見つけるために、私はクラス/コントローラ/ FrontController.phpでパースラインを追加しました:

public function addMedia($media_uri, $css_media_type = null, $offset = null, $remove = false, $check_path = true) 
{ 
    echo 'addMedia '.$media_uri."<br/>\n"; 

、結果は次のとおりです。すべてのCSS/JSファイルは(単に<body>後)ページの先頭前に現れ、私のファイルはform_model.tplを表示する直前です

私のファイルを楽しい時間に呼び出すにはどうすればいいですか?

答えて

2

$this->context->controller->addCSSaddJShookDisplayHeader()の外側には使用しないでください。

ページのヘッダーを作成するときに、hookDisplayHeader()が追加され、ヘッダー要素が追加されます。このフックが完了すると、ヘッダーが作成され、変更することはできません。

したがって、フックhookDisplayTopColumn()が呼び出されると、ヘッダはすでに作成されています。

public function hookDisplayHeader($params) 
{ 
    $this->context->controller->addCSS($this->_path.'css/modelfilter.css', 'all'); 
    $this->context->controller->addJS($this->_path.'js/modelfilter.js'); 
} 

をそしてhookDisplayTopColumn()からこれらの行を削除します。

あなたのモジュールでhookDisplayHeader()を実装する必要があなたのファイルを追加します。

+0

よろしくお願いいたします。私は今朝は十分に目が覚めていなかったようだ。今それはとても明白なようです... – Nathanael

+0

この回答があなたの問題を解決した場合、それを受け入れてくださいできますか? [回答を受け入れる方法は?](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

関連する問題