将我的CSS添加到prestashop中的主题

时间:2015-10-30 05:15:17

标签: prestashop prestashop-1.6

我是prestashop的新人。我创建了我的css文件,并希望将其添加到prestashop主题。如何添加新填充并使prestashop读取标题部分中的文件?在论坛中我看到他们说要将它添加到hookheader,我试图将它添加到某个模块并执行以下操作:

1)添加到主题标题文件{hook h="myCssHook"}

2)添加一些rendom模块功能:

public function myCsshook(&params)
{
$this->context->controller->addCSS(($this->_path).'prestashop/myshop/theme/css/myoverride/myCsstheme.css', 'all');
}

3)在模块安装副本中添加:

|| $this->registerHook('myCssHook') == false

它并没有奏效。我使用prestashop 1.6.1.1

2 个答案:

答案 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,那么这不是必需的。