마 젠토 2 : 커스텀 모듈 레이아웃 XML 파일을 사용하여 페이지의 특정 섹션에 정적 블록 추가


16

magento 1.x에서는 xml 레이아웃 파일을 사용하여 정적 블록을 추가 할 수 있습니다.

<reference name="root">
        <block type="cms/block" name="name">
            <action method="setBlockId"><block_id>static-block-id</block_id></action>
        </block>
</reference>

그러나 magento 2에서 어떻게 달성 할 수 있습니까?

답변:


25

마침내 나는 해결책을 얻었다. 다음과 같은 방법으로 정적 블록을 호출 할 수 있습니다.

<referenceContainer name="footer">
    <block class="Magento\Store\Block\Switcher" name="store_switcher" as="store_switcher" after="footer_links" template="switch/stores.phtml"/>

     <block class="Magento\Cms\Block\Block" name="test">
        <arguments>
            <argument name="block_id" xsi:type="string">promo</argument>
        </arguments>
    </block>
</referenceContainer>

참조 이름을 어떻게 찾았습니까?
Stevie G

@StevieG 위치를 찾 거나 기본 XML 구현을 읽으면 모든 것이 어떻게 구성되어 있는지 알 수 있습니다 (장기적으로 매우 유용함).
Melvyn

8

아래 단계에 따라 관리자 패널에서 쉽게 수행 할 수 있습니다.

  1. 컨텐츠-> 위젯으로 이동
  2. 새 위젯 추가
  3. CMS 정적 블록으로 유형 선택
  4. 디자인 패키지 / 테마를 선택하고 계속
  5. 설정 Widget Title, StoreSort orderStorefront properties
  6. Widget options탭 에서 고정 블록을 선택 하십시오
  7. 위젯을 저장하십시오
  8. 클릭 Add Layout Update버튼
  9. Display on드롭 다운 에서 옵션을 선택하십시오 (예 : 지정시 Specific page블록 표시).

  10. Page드롭 다운 에서 페이지를 선택하십시오.

  11. Container드롭 다운 에서 컨테이너 선택
  12. 위젯을 저장

CMS 페이지에만 유용합니다. 커스텀 모듈 xml에서도 사용할 수 있습니까?
Praful Rajput

cms 페이지 예제 만 제공했으며 가능한 모든 모듈 또는 페이지에 사용할 수 있습니다. 당신은 드롭 다운에 표시에 옵션의 목록을 확인하여 아이디어를 얻을 수 있습니다
Taral Patoliya을

이것은 우수하고 깨끗하며 단순합니다. 감사합니다.
dawhoo

5

2 열 왼쪽 페이지에서 정적 블록을 호출하려면 다음을 사용하여 간단하게 수행 할 수 있습니다.

여기 아래에서 quickblock정적 블록 식별자로 변경할 수 있습니다 .

<referenceContainer name="sidebar.main">
            <block class="Magento\Cms\Block\Block" name="quick-block">
                <arguments>
                    <argument name="block_id" xsi:type="string">quickblock</argument>
                </arguments>
            </block>
</referenceContainer>

위의 블록은 사이드 바가있는 2 열 왼쪽에서 잘 작동합니다.


Hi 카테고리 페이지 레이아웃에 대해서만 정적 블록을 호출하려면? sidebar.additional을 사용하여 XML에서 정적 블록을 호출했지만 작동하지 않습니다. 이유가 무엇입니까?
jack

@Rakesh, <? php echo $ this-> getLayout ()-> createBlock ( 'Magento \ Cms \ Block \ Block')-> setBlockId ( 'identiefier_id')-> toHtml (); ?> 나는 그것이 작동하지, success.phtml에 사용
자파르 pinjar

2

다음 코드에서 magento 대시 보드에서 생성 된 CMS 블록에서 "block_identifier"를 변경하고 layout.xml에 추가하십시오. 효과가있다.

<referenceContainer name="footer">
       <block class="Magento\Cms\Block\Block" name="block_identifier">
            <arguments>
                <argument name="block_id" xsi:type="string">block_identifier</argument>
            </arguments>
        </block>
    </referenceContainer>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.