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.

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.