使用Prestashop模块动态嵌入inline-CSS

时间:2018-02-01 09:08:51

标签: prestashop-1.7

如何动态嵌入通过后台输入的内联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>开放标记上方。

1 个答案:

答案 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