2

我正在 prestashop 1.5 中开发一个模块。我正在使用 displayAdminProductsExtra 挂钩在管理选项卡中显示 tpl 文件。当我在 tpl 中包含我的 jquery 代码时,它工作正常。但是当我尝试将其作为新文件并包含它不起作用时。到目前为止,我尝试了以下方法..

使用 displayBackOfficeHeader 注册一个钩子并像这样调用..

public function hookdisplayBackOfficeHeader($params) 
{
    $this->context->controller->addJS(($this->_path).'abc.js');
}

我也尝试将它添加到 displayAdminProductsExtra 中,就像这样..

$this->context->controller->addJS(_MODULE_DIR_.$this->module->name.'/views/js/abc.js'); //first tried..
$this->context->controller->addJS(($this->_path).'abc.js','all'); //second tried this..

我尝试过像这样的getcontent ..

public function getContent()
{   
    $this->_html= '<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js">
        <script src="../modules/abc/abc.js" type="text/javascript" ></script>';
    return $this->_html;
}

但是这些方法没有添加我的 js 文件。不知道在哪里犯了错误。任何帮助将不胜感激。

4

2 回答 2

4

当您创建 Prestashop 模块时,您必须添加函数 hookHeader 并在其中添加在页面中添加 js 的行。

需要这样的东西:

public function hookHeader ($ params)
{
     $ this-> controller-> addJS (($ this-> _path). 'abc.js');
}

另一方面,查看 blockcategories.php 文件中模块 blockcategories 的代码,我们看到以下内容:

public function displayForm()
{
...
}

该功能是为模块配置创建一个页面,与您使用其他模块的方式相同。也许这是一个更简单的选择,但开发速度更快。

问候

于 2013-08-24T10:13:31.220 回答
0

钩子DisplayHeader(或Header)用于在前台页面中注册资产!

这适合您的 JavaScript 路径:

$this->context->controller->addJS($this->_path . 'abc.js');

但是在注册 JavaScript 之前,您没有通过此方法注册 jQuery 资产:

$this->context->controller->addJquery();

另外,你不应该使用 hook DisplayBackOfficeHeader。而不是它,你应该使用 hook ActionAdminControllerSetMedia

这是详细信息,如何在后台(在管理页面中)注册 JavaScript

于 2018-11-05T03:32:27.277 回答