我是prestashop的新人。我创建了我的css文件,并希望将其添加到prestashop主题。如何添加新填充并使prestashop读取标题部分中的文件?在论坛中我看到他们说要将它添加到hookheader,我试图将它添加到某个模块并执行以下操作:
1)添加到主题标题文件{hook h="myCssHook"}
2)添加一些rendom模块功能:
public function myCsshook(¶ms)
{
$this->context->controller->addCSS(($this->_path).'prestashop/myshop/theme/css/myoverride/myCsstheme.css', 'all');
}
3)在模块安装副本中添加:
|| $this->registerHook('myCssHook') == false
它并没有奏效。我使用prestashop 1.6.1.1
答案 0 :(得分:4)
最好的方法是在正确的控制器文件的setMedia()函数中添加以下内容。
$this->addCSS(_THEME_CSS_DIR_.'myoverride/myCsstheme.css');
例如,如果要将css添加到所有产品页面,则必须在控制器/ front / ProductController.php中添加此代码
$this->addCSS(_THEME_CSS_DIR_.'product.css');
如果要将其添加到所有页面,则必须在
之后的类/ controller / FrontController.php中添加此代码$this->addCSS(_THEME_CSS_DIR_.'global.css', 'all');
更好(更干净)的方法是创建覆盖文件 例如,对于FrontController,在override / classes / controller / FrontController.php中创建一个名为FrontController.php的新文件,并输入以下代码:
<?php
class FrontControllerCore extends Controller
{
public function setMedia()
{
parent::setMedia(); // This will take all code in setMedia() of the original classes/controller/FrontController.php
$this->addCSS(_THEME_CSS_DIR_.'myoverride/myCsstheme.css');
}
}
您可以为每个控制器创建覆盖文件。如你所愿。
答案 1 :(得分:1)
@ébewè:这绝对不是最好的方法,因为下一次软件更新很可能会再次被覆盖。
如果你想在控制器本身中执行此操作,则在覆盖/控制器/你的控制器中创建该类的覆盖,并在该覆盖中执行。这样,您的工作就不会被软件opdate覆盖。
如果你在模块上工作,那么你在模块内创建css文件(f.i. css / mycss.css)并在你添加的相应钩子中创建:
$this->context->controller->addCSS(($this->_path).'css/mycss.css);
如果你想在你的主题中也这样,那么你也可以在
中添加文件/themes/yourtheme/modules/yourmodule/css/mycss.css
但如果您不需要更改主题中的css,那么这不是必需的。