我尝试添加外部CSS,但不是工作属性,
我使用的是prestashop版本1.7.4.3
在install()函数中,我称钩子
&& $this->registerHook('displayHeader')
&& $this->registerHook('backOfficeHeader')
在挂钩内,我注册了css和js文件
public function hookDisplayHeader($params)
{
$this->context->controller->addCSS(($this->_path) .'views/css/style.css');
$this->context->controller->addJS(($this->_path) .'views/js/script.js');
$this->context->controller->addCSS('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
}
public function hookBackOfficeHeader(){
$this->context->controller->addCSS('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
$this->context->controller->addCSS(($this->_path) .'views/css/module.css');
$this->context->controller->addJqueryUI('ui.sortable');
}
在 hookBackOfficeHeader()中没有问题,但是在 hookDisplayHeader()中并不想注册很棒的字体。
我尝试使用 registerStylesheet()代替addCss(),但是根本不起作用。
为什么这两个函数之间有区别?可能是因为hookDisplayHeader不接受外部文件吗?
谢谢
修改:
我用 registerStylesheet()和 registerJavascript()
解决了public function hookDisplayHeader($params)
{
$this->context->controller->registerStylesheet(
'sidemenu',
($this->_path) .'views/css/style.css',
['server' => 'remote', 'position' => 'head', 'priority' => 150]
);
$this->context->controller->registerJavascript(
'sidemenu-js',
($this->_path) .'views/js/script.js',
['server' => 'remote', 'position' => 'head', 'priority' => 120]
);
$this->context->controller->registerStylesheet(
'remote-font-awesom',
'https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
['server' => 'remote', 'position' => 'head', 'priority' => 20]
);
}
答案 0 :(得分:1)
另外,为了添加字体很棒,最好使用requireAssets(array('font-awesome'))这样的东西
$this->context->controller->requireAssets(array('font-awesome'));
答案 1 :(得分:0)
addJS(),addCSS(),addJqueryUI()和addJqueryPlugin()方法保持向后兼容性。顺便说一句,现在是更新库并使用新方法的最佳时机。
在开发PrestaShop模块时,您可能需要为模板添加特定样式。最好的方法是使用父级FrontController类提供的registerStylesheet和registerJavascript方法。
查看链接:https://devdocs.prestashop.com/1.7/themes/getting-started/asset-management/
致谢