如何在prestashop 1.5中添加css到模块?

时间:2013-04-29 06:44:07

标签: css prestashop

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

3 个答案:

答案 0 :(得分:3)

只需添加hookHeader:

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

我希望这有帮助, 麦克

答案 1 :(得分:2)

我找到了更好的方法。有一个更具体的钩子:displayBackOfficeHeader。 这确保您的背景将只是后勤办公室,而不是前台办公室。 此外,为了确保它仅在特定情况下有效(例如仅在配置页面中),您可以检查URL变量。 所以,首先,在install()中添加注册函数(并确保重置模块以使钩子工作):

$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');
    }

此外,take a look to the docs。 希望它有所帮助!

[编辑]

我刚刚发现上面的代码在堆栈的开头添加了文件,而不是在结尾处。这意味着,例如,BEFORE 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 incusion代码之后。所以它才有用。相反,addCSS / JS方法独立工作,并且根本不考虑钩子位置。

答案 2 :(得分:1)

我也面临同样的问题...... 我认为唯一的方法就是入侵 [路径到项目] / [管理路径] /themes/default/template/helper/form/form.tpl

并添加块{block name =“before”} {/ block}

并将此块添加到您的form.tpl到您的控制器模板中: [路径到项目] / [管理路径] /主题/默认/模板/控制器/ [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