Magento 2:すべてのページの<head>に任意のHTMLを追加しますか?


23

Magento 2では、すべてのフロントエンド/カートページに任意のビットの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/>ページの要素にコンテンツを追加するための同様のブロックがあるかどうかは明らかではありません。私はdev docsサイトとソースコードを調べましたが、タグで使用できる新しいタグへの参照がたくさんあります<head/>

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

しかし<head/>、Magento 2のページのセクションに任意のhtml / textを追加する方法のリファレンスは見つかりません。

回答:


28

これについて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>

私は実際のコードをテストしませんでした(私は怠gettingになっています)が、私が持っている唯一のリードです。


3
1〜2年後には、Stack Exchangeで質問をするだけで怠zyになります:)上記は完全に機能しました(アイロールとヘッドシェークは耐えられません)
アランストーム

4
代表的な場合:これは、津波に先行するバタフライフラップです。
ブレンダンファルコフスキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.