1

我正在 prestashop 1.5 中开发一个模块。当管理员在管理面板中访问我的模块时,我需要提供一些设计(css)。我是 prestashop 的新手.. 任何人都可以帮助我..

4

3 回答 3

3

只需添加 hookHeader :

$this->context->controller->addCSS($this->_path.'style.css', 'all');

我希望这有帮助,迈克

于 2013-06-09T16:29:55.193 回答
2

我找到了更好的方法。有一个更具体的钩子:displayBackOfficeHeader。这样可以确保您的上下文仅是后台而不是前台。此外,为确保它仅在特定情况下有效(例如仅在配置页面中),您可以检查 url vars。因此,首先,在 install() 中添加 register 函数(并确保重置模块以便挂钩起作用):

$this->registerHook('displayBackOfficeHeader');

还要在uninstall()中添加注销代码:

$this->unregisterHook('displayBackOfficeHeader');

然后添加相关函数。在此示例中,我正在检查我是否在配置页面中(imagebanner 是模块的名称):

    public function hookDisplayBackOfficeHeader($params){

       if(!(Tools::getValue('controller') == 'AdminModules' && Tools::getValue('configure') == 'imagebanner')){
          return;
       }

       $this->context->controller->addCSS($this->_path.'back-office.css', 'all');
    }

另外,请查看文档。希望能帮助到你!

[编辑]

我刚刚发现上面的代码将文件添加到堆栈的开头,而不是末尾。这意味着,例如,在 jquery 之前。似乎没有办法控制注入顺序。无论如何,目前,我找到了一个简单的解决方案:直接返回 html 代码:

public function hookDisplayBackOfficeHeader($params){

    if(!(Tools::getValue('controller') == 'AdminModules' && Tools::getValue('configure') == 'homebanners')){
        return;
    }

    $html = '';
    $html .= '<link href="'.$this->_path.'back-office.css" rel="stylesheet" type="text/css" media="all" />';
    $html .= '<script src="'.$this->_path.'back-office.js" type="text/javascript" ></script>';

    return $html;
}

它之所以有效,是因为如果您查看 admin header.tpl,您会发现该 Hook 实际上位于 js/css 插入代码之后。所以它只是工作。相反,addCSS/JS 方法独立工作,根本不考虑挂钩位置。

于 2013-07-25T09:07:58.357 回答
1

我也面临同样的问题......我认为唯一的方法是侵入 [path-to-project]/[admin-path]/themes/default/template/helper/form/form.tpl

并添加块 {block name="before"}{/block}

并将此块添加到您的 form.tpl 到您的控制器模板中:[path-to-project]/[admin-path]/themes/default/template/controllers/[yourcontrollername]/helpers/form/form.tpl

{block name="before"}
<style>
/* your style here */
</style>
{/block}

有关更多信息,您可以在此处参考我的博客文章:http: //mercstudio-tech.blogspot.com/2013/05/prestashop-form-field-type.html

于 2013-05-15T16:09:14.257 回答