如何动态嵌入通过后台输入的内联CSS。只有两种注册方法可用于在Prestashop中注册资产。
public function hookDisplayHeader()
{
$this->context->controller->registerJavascript('id', 'path/to/file.js');
$this->context->controller->registerStylesheet('id', 'path/to/file.css');
}
registerStylesheet
方法有一个名为inline
的选项,但这要求内容首先位于现有文件中。虽然我在配置中存储了CSS代码。
尝试echo
hookDisplayHeader()
中的内容会导致它被打印在<html>
开放标记上方。
答案 0 :(得分:1)
在模块的hooks目录中创建一个TPL文件。
然后从hookDisplayHeader()函数中的配置中获取CSS代码值并将其传递给smarty:
$custom_css = `GET CUSTOM CSS FROM CONFIG`;
$this->smarty->assign('yourcustomcss', $custom_css);
return $this->display(__FILE__, 'dummy_file.tpl');
然后在TPL文件中:dummy_file.tpl
{if isset($yourcustomcss)}
<style>{$yourcustomcss nofilter}</style>
{/if}
TPL文件应该在以下目录中:
/yourmodule/views/templates/hook/dummy_file.tpl