我正在制作一个模块,在产品编辑页面中添加新标签。安装是Prestashop 1.6.1.4。该模块添加了一个选项卡,其中包含一些将数据发送到mysql表的输入字段,但我想要做的是将字段设置为一点,以使它们看起来很好。我在我的module.php文件中添加这个:
public function install() {
if ($this->psversion() == 5 || $this->psversion() == 6)
{
if (parent::install() == false or !$this->registerHook('displayHeader') or !$this->registerHook('productFooter') or !$this->registerHook('displayAdminProductsExtra') or !$this->registerHook('actionProductUpdate') or !$this->registerHook('displayBackOfficeHeader'))
{
return false;
}
}
return true;
}
然后在下面我把这个代码:
public function hookDisplayBackOfficeHeader($params) {
$this->context->controller->addCSS($this->_path.'views/css/adminsportsnutritionfadd.css');
}
但无法使.css文件出现。该文件位于正确的位置,它具有适当的权限,文件的所有者是www-data:www-data,因此这不应该是权限问题。我在Prestashop中禁用了css组合以及缓存。在重新加载页面之前,我还删除了Prestashop的缓存以防万一,以及我删除了我的浏览器的缓存。有人可以帮我一把吗?
这样做:
public function hookBackOfficeHeader()
{
$this->context->controller->addCSS($this->_path.'views/css/adminsportsnutritionfadd.css');
}
对我来说,它的工作原理如下:
$this->context->controller->addCSS($this->_path . 'views/css/back.css');
所以唯一的区别是css文件名。
不确定你是否排序,但......
我在大多数模块中使用这个函数来添加jQuery,Font-awesome,CSS和JS,然后只在该模块页面上显示它...
public function hookDisplayBackOfficeHeader($params)
{
if(!(Tools::getValue('controller') == 'AdminModules'
&& Tools::getValue('configure') == 'MyModuleName')
){
return;
}
else
{
if ( method_exists($this->context->controller, 'addJquery') )
{
$this->context->controller->addJquery();
$this->context->controller->addCss('//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
$this->context->controller->addCss($this->_path.'views/css/back.css');
$this->context->controller->addJs($this->_path.'views/js/back.js');
}
}
}