我正在 prestashop 1.5 中开发一个模块。当管理员在管理面板中访问我的模块时,我需要提供一些设计(css)。我是 prestashop 的新手.. 任何人都可以帮助我..
3 回答
只需添加 hookHeader :
$this->context->controller->addCSS($this->_path.'style.css', 'all');
我希望这有帮助,迈克
我找到了更好的方法。有一个更具体的钩子: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 方法独立工作,根本不考虑挂钩位置。
我也面临同样的问题......我认为唯一的方法是侵入 [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