Magento 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

@ SteveieG Либо найдите его, либо прочитайте реализации XML по умолчанию, чтобы вы знали, как все устроено (очень полезно делать в течение длительного времени).
Мелвин

8

Это можно легко сделать из панели администратора, выполнив следующие действия.

  1. Перейти к содержанию -> Виджеты
  2. Добавить новый виджет
  3. Выберите тип в качестве статического блока CMS
  4. Выберите дизайн пакета / тему и продолжить
  5. Установить Widget Title, Storeа Sort orderвStorefront properties закладке
  6. Выберите статический блок из в Widget options вкладке
  7. Сохранить виджет
  8. Нажмите на Add Layout Update кнопку
  9. Выберите опцию из Display onвыпадающего Specific pageменю, например: для отображения блока по

  10. Выберите страницу из Pageвыпадающего

  11. Выберите контейнер из Containerвыпадающего
  12. сохранить виджет

Это полезно только для страниц CMS. Можем ли мы использовать его и в нашем пользовательском модуле xml?
Praful Раджпут

Я предоставил только пример страницы cms, вы можете использовать его для каждого возможного модуля или страницы. Вы можете получить представление, увидев список опций в раскрывающемся меню «Показать на дисплее»
Taral Patoliya

Это отлично, чисто и просто. Спасибо.
dawhoo

5

Если вы хотите вызвать static-block на странице 2columns-left, вы можете просто сделать это, используя

здесь ниже вы можете изменить 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 колонок слева с боковой панелью.


Привет Если мы хотим вызвать статический блок только для разметки страницы категории тогда? я вызывал статический блок в xml с sidebar.additional, но он не работает. Что может быть причиной?
Джек

@Rakesh, <? Php echo $ this-> getLayout () -> createBlock ('Magento \ Cms \ Block \ Block') -> setBlockId ('identiefier_id') -> toHtml (); ?> Я использовал в success.phtml, он не работает
Джафар Пинджар

2

В следующем коде измените «block_identifier» из блока CMS, созданного на инструментальной панели magento, и добавьте его в 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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.