Magento 2:向每个页面的<head>添加任意HTML吗?


23

在Magento 2中,是否可以向每个前端/购物车页面的HTML添加任意位的HTML <head/>

我知道我可以<body>使用以下代码将块添加到内容/ 区域

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="content">
            <block type="Pulsestorm\Test\Block\Head" name="pulsestorm.head" as="pulsestorm.head" template="pulsestorm/head.phtml"/>
        </referenceBlock>
    </body>
</page>

但是,尚不清楚是否存在用于将内容添加到<head/>页面元素的类似块。我已经浏览了开发文档网站和源代码,并且有很多对标签的引用,您可以将它们与<head/>标签一起使用

<head>
    <css.../>
    <js.../>
</head>

但我找不到<head/>在Magento 2 中将任意html /文本添加到页面部分的方法的任何参考。

Answers:


27

对此不是100%肯定的,但是我认为您可以使用以下代码将代码添加到头部:

<body>
    <referenceBlock name="head.additional">
        <block class="Pulsestorm\Test\Block\Head" name="pulsestorm.head" as="pulsestorm.head" template="pulsestorm/head.phtml"/>
    </referenceBlock>
</body>

我知道,在中添加代码<body>但在中添加代码听起来很奇怪,<head>但这就是我这么认为的原因:

页面的“骨架”由以下模板确定:https : //github.com/magento/magento2/blob/develop/app/code/Magento/Theme/view/base/templates/root.phtml
此模板回显$headAdditional(和其他变量)
这些变量在\ Magento \ Framework \ View \ Result :: render()中初始化, 并且var $headAdditional看起来像这样:

'headAdditional' => $addBlock ? $addBlock->toHtml() : null,

这里$addBlock

$addBlock = $this->getLayout()->getBlock('head.additional');

然后,我搜索了引用head.additional并在app/code/Magento/Catalog/view/frontend/layout/catalog_product_opengraph.xml

<body>
    <referenceBlock name="head.additional">
        <block class="Magento\Catalog\Block\Product\View" name="opengraph.general" template="Magento_Catalog::product/view/opengraph/general.phtml">
            <block class="Magento\Directory\Block\Currency" name="opengraph.currency" as="meta.currency" template="Magento_Catalog::product/view/opengraph/currency.phtml"/>
        </block>
    </referenceBlock>
</body>

我没有测试实际的代码(我变得很懒),但这是我唯一的线索。


3
一两年之内,您会很懒惰,如果有一个,则只需要在Stack Exchange上提问:)上面的方法非常有效(眼睛滚动和摇头无法承受)
Alan Storm

4
如果有代表性:这是海啸发生之前的蝴蝶瓣,我将不满意M2命名的方式。
布伦丹·福尔科夫斯基15/12/7
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.