Magento 2: Menambahkan HTML Sewenang-wenang ke <head> Setiap Halaman?

23

Di Magento 2, mungkinkah menambahkan sedikit HTML sewenang-wenang ke setiap halaman muka / keranjang <head/>?

Saya tahu saya bisa menambahkan blok ke konten / <body>area dengan kode seperti ini

<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>

Namun, tidak jelas apakah ada blok serupa untuk menambahkan konten ke <head/>elemen halaman. Saya telah memeriksa situs dev docs dan kode sumber, dan ada banyak referensi untuk tag baru yang dapat Anda gunakan dengan sebuah <head/>tag

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

tapi saya tidak dapat menemukan referensi cara untuk menambahkan html / teks sewenang-wenang ke <head/>bagian halaman di Magento 2.

Alan Storm
sumber

Jawaban:

27

tidak 100% yakin tentang ini, tapi saya pikir Anda dapat menambahkan kode ke kepala menggunakan ini:

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

Saya tahu, kedengarannya aneh untuk menambahkan kode di <body>tetapi membuatnya dalam <head>tapi di sini adalah mengapa saya pikir begitu:

"Kerangka" halaman ditentukan oleh templat ini: https://github.com/magento/magento2/blob/develop/app/code/Magento/Theme/view/base/templates/root.phtml
Templat ini bergema $headAdditional( dan variabel lainnya) Variabel
-variabel ini diinisialisasi dalam \ Magento \ Framework \ View \ Result :: render () dan var $headAdditionalterlihat seperti ini:

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

di mana $addBlockadalah

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

Lalu saya mencari referensi head.additionaldan menemukan ini diapp/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>

Saya tidak menguji kode yang sebenarnya (saya menjadi malas) tetapi itu satu-satunya petunjuk yang saya miliki.

Marius
sumber
3
Dalam satu atau dua tahun Anda akan cukup malas untuk hanya mengajukan pertanyaan di Stack Exchange ketika Anda memilikinya :) Hal di atas bekerja dengan baik (eye rolls dan head shake tidak tahan)
Alan Storm
4
Jika representatif: ini adalah lipatan kupu-kupu yang mendahului tsunami tentang betapa aku tidak akan suka dengan cara M2 menyebut banyak hal.
Brendan Falkowski