마 젠토 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.