Prestashop 1.6 - 如何向正文元素添加动态 class

Prestashop 1.6 - How to add a dynamic class to the body element

在 Prestashop 1.6 站点中,我需要向 body 元素(就在前端)添加一个动态 class。

class 应该是 'group-[group-name-id]' 其中 group-name-id 是访问者的组名 id。

Presashop 中的默认组是:

'1'--'Visitor'

'2'--'Guest'

'3'--'Costumer'

有办法吗?

我找到了这个,但它似乎过时了,因为它适用于 PS 1.4:https://www.prestashop.com/forums/topic/179593-adding-category-class-id-to-product-page-body/

更新:

感谢@TheDrot 的回答(就在下面),我几乎明白了。

唯一的问题是:[0]。我收到此错误:"Parse error: syntax error, unexpected '[', expecting ')' in /home/temporal-4/www/override/classes/controller/FrontController.php on line 36"。

如果我删除“[0]”,它会起作用,但在 class 中我会得到 "group-array"。我需要打印数组的所有值,如 class="group-1 group-2 group-3"。

您需要覆盖 FrontControllerCore class,因此在文件夹 'override/classes/controller/' 中创建一个文件 FrontController.php 并放入此代码

class FrontController extends FrontControllerCore {
    public function init() 
    {
        parent::init();
        $this->context->smarty->assign('group_id', $this->context->customer->getGroups()[0]; // user can exist in multiple groups, so for this example im just grabbing first group id
    }
}

然后打开 'themes/your_theme/' 中的 header.tpl 文件并在正文中添加代码 class

group-{$group_id}

如果在正文 class 中您只看到组-,请务必从缓存文件夹中删除 class_index.php 并重新加载页面。

对于 PS1.7 不需要覆盖任何东西,也许它适用于 PS1.6

添加 $groupid = "group-1" 或 "group-2" 等。通过在你的控制器和你的模板中使用 assign() 函数添加到顶部

{$page["body_classes"][$groupid] = 'true'}

让我们知道这个技巧