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>
Бхану Гупта
источник