Magento 2: Her sayfanın <head> bölümüne rasgele HTML ekleme?


23

Magento 2'de, her ön uç / alışveriş sepeti sayfasına isteğe bağlı olarak bir miktar HTML eklemek mümkün <head/>mü?

Bunun <body>gibi bir kod içeren içeriğe / alana bir blok ekleyebileceğimi biliyorum

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

Ancak, <head/>bir sayfanın öğesine içerik eklemek için benzer bir blok olup olmadığı açık değildir . Ben dev dokümanlar site ve kaynak kodu inceledim ve başvurular çok şey var yeni bir kullanabileceğiniz etiketleri <head/>etiketi

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

ancak <head/>Magento 2'deki bir sayfanın bölümüne rastgele html / metin eklemenin bir yolunu bulamıyorum .

Yanıtlar:


27

% 100 bundan emin değil, ancak bunu kullanarak başınıza kod ekleyebileceğinizi düşünüyorum:

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

Biliyorum, içine kod eklemek garip geliyor <body>ama içinde işlemek <head>ama bu yüzden böyle düşünüyorum:

Sayfanın "iskeleti" bu şablon tarafından belirlenir: https://github.com/magento/magento2/blob/develop/app/code/Magento/Theme/view/base/templates/root.phtml
Bu şablon echos $headAdditional( ve diğer değişkenler)
Bu değişkenler \ Magento \ Framework \ View \ Result :: render () içinde başlatılır ve var $headAdditionalşöyle görünür:

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

nerede $addBlockolduğunu

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

Sonra referansları aradım head.additionalve bunu içinde buldum.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>

Gerçek kodu sınamadım (tembelleşiyorum), ancak sahip olduğum tek ipucu.


3
Bir veya iki yıl içinde, sadece bir tane varken Stack Exchange ile ilgili bir soru soracak kadar tembel olacaksınız :) Yukarıdakiler mükemmel çalıştı (göz merdaneleri ve kafa sallanmaya başlamaz)
Alan Storm

4
Temsilci ise: bu, M2'nin isimlerini nasıl sevmediğimin tsunamisinden önceki kelebek kanadı.
Brendan Falkowski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.