我试图弄清楚如何使用Magento 2框架以编程方式将css类添加到body标记
答案 0 :(得分:4)
您可以通过覆盖_prepareLayout
方法从块中向主体添加类:
public function _prepareLayout(){
$this->pageConfig->addBodyClass('my-class');
return parent::_prepareLayout();
}
答案 1 :(得分:3)
我已经为layout_load_before
创建了一个观察者,如下所示:
...
public function __construct(
\Magento\Framework\View\Page\Config $pageConfig
) {
$this->_pageConfig = $pageConfig;
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
$this->_pageConfig->addBodyClass('my-new-body-class');
}
答案 2 :(得分:0)
请参阅我创建的以下示例,此插件将商店代码添加到正文类:https://github.com/samgranger/StoreCodeBodyClass
将插件放在app / code / SamGranger中并运行通常的脚本来启用它(bin / magento模块:启用SamGranger_StoreCodeBodyClass + bin / magento setup:di:compile)。
答案 3 :(得分:-1)
在布局中使用以下代码以编程方式将css类或id添加到body标记
<body>
<attribute name="class" value="custom-body-class" />
<attribute name="id value="custom-html-id"/>
例如 - 在布局文件夹中打开文件customer_account.xml MagentoDir&gt;供应商&gt; magento&gt; module-customer&gt;视图&gt;前端&gt;布局
打开customer_account.xml文件后,您可以看到添加css类
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Customer My Account (All Pages)" design_abstraction="custom">
<body>
<attribute name="class" value="account"/>