将我的 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(¶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
最好的方法是在正确的控制器文件的 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,则没有必要。
我是 prestashop 的新手。我创建了 css 文件并想将其添加到 prestashop 主题中。我如何添加新的填充并让 prestashop 读取 header 部分中的文件?在论坛上我看到他们说要将它添加到 hookheader ,我试图将它添加到某个模块并执行以下操作:
1) 添加到主题 header 文件 {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
最好的方法是在正确的控制器文件的 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,则没有必要。