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

add my css to theme in prestashop

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

1) 添加到主题 header 文件 {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

最好的方法是在正确的控制器文件的 setMedia() 函数中添加以下内容。

$this->addCSS(_THEME_CSS_DIR_.'myoverride/myCsstheme.css');

例如,如果您想将 css 添加到所有产品页面,则必须在 controllers/front/ProductController.php 之后添加此代码

$this->addCSS(_THEME_CSS_DIR_.'product.css');

如果您想将它添加到您的所有页面,您必须在 classes/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');
    }
}

您可以为每个控制器创建覆盖文件。如你所愿。

@ébewè:这绝对不是最好的方法,因为下一次软件更新很可能会再次覆盖它。

如果您想在控制器本身中执行此操作,请在 overrides/controllers/yourcontrollers 中创建 class 的覆盖并在该覆盖中执行此操作。这样您的工作就不会被软件更新覆盖。

如果你在模块上工作,那么你在模块中创建 css 文件(f.i。css/mycss。css)并在适当的钩子中你添加:

$this->context->controller->addCSS(($this->_path).'css/mycss.css);

如果你也想在你的主题中添加这个文件,那么你也可以在

中添加文件
/themes/yourtheme/modules/yourmodule/css/mycss.css

但如果您不需要更改主题中的 css,则没有必要。