마 젠토 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 문서 사이트와 소스 코드를 살펴 보았 으며 태그 와 함께 사용할 수있는 새로운 태그 에 대한 참조가 많이 있습니다.<head/>

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

그러나 <head/>Magento 2의 페이지 섹션에 임의의 html / text를 추가하는 방법에 대한 참조를 찾을 수 없습니다 .

답변:


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
일년에 한두에서 당신은 당신이 일이있을 때 단지 스택 교환에 대한 질문을하는 게으른 충분합니다 :)이 (아이 롤과 머리 쉐이크는 견딜 수없는) 완벽하게 작동 이상
— 앨런 스톰

4
대표적 인 경우 : 이것은 쓰나미에 앞서 나비 플랩으로 M2가 물건을 명명하는 방식을 얼마나 싫어할 것입니까?
— Brendan Falkowski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.