Как показать статические блоки в Magento 2?

Я создаю тему magento 2. Я хочу отображать пользовательские блоки на главной странице cms.

Я хочу знать, чтобы показать статические блоки в макете phtml и xml, содержимое страницы cms

Как я могу сделать?


person John    schedule 17.09.2015    source источник
comment
Я хочу знать, чтобы показать статические блоки в макете phtml и xml, содержимое страницы cms.   -  person John    schedule 17.09.2015


Ответы (4)


Пожалуйста, попробуйте использовать приведенные ниже коды.

В файле Phtml:

<?php echo $this->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('block_identifier')->toHtml();?>

в контенте CMS:

{{block class="Magento\\Cms\\Block\\Block" block_id="block_identifier"}}

В XML-файле:

<referenceContainer name="content">
    <block class="Magento\Cms\Block\Block" name="block_identifier">
        <arguments>
            <argument name="block_id" xsi:type="string">block_identifier</argument>
        </arguments>
    </block>
</referenceContainer>
person skynetch    schedule 17.09.2015
comment
Использование Magento 2.0.2. В целях тестирования я вставил предоставленный выше xml на страницу продукта Custom Layout Update и предоставил блок php в файл app/design/frontend/Magento/<Vendor>/<theme>/Magento_Catalog/templates/product/view/details.phtm. Я до сих пор не могу увидеть этот блок. Я сделал что-то не так? - person crashtestxxx; 21.02.2016
comment
Мне нужно было установить и другие параметры, вот так <?php echo $this->getLayout()->createBlock('vendor\module\Block\BlockClass')->setName('name')->setTemplate('vendor_module::template.phtml')->toHtml(); ?> - person cjohansson; 21.05.2018

Вышеприведенное верно, кроме того, файл xml для домашней страницы находится cms_index_index.xml внутри папки Magento_Cms (и он должен находиться в вашей собственной папке пакета/темы, а не в Magento/blank или app/code).

Просто поместите приведенный выше xml-код в тег <body> в этом файле, в зависимости от настроек кеша вам может потребоваться очистить их, чтобы увидеть изменения.

person Klaus De Buysser    schedule 24.09.2015

ни один из них не работает для размещения статических блоков через default.xml Пожалуйста, пришлите правильные примеры. В 2.0.7 Когда я применяю к своей теме следующее, после создания статического блока в администрации с именем socialimg / socialimg в качестве идентификатора блока ничего не появляется. ни даже в памяти. нет даже поиска в exception.log или system.log

    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="header.panel">
            <block class="Magento\Framework\View\Element\Html\Links" name="header.links">
                <arguments>
                    <argument name="css_class" xsi:type="string">header links</argument>
                </arguments>
            </block>
        </referenceContainer>
<referenceBlock name="socialimg1">
    <block class="Magento\Cms\Block\Block" name="socialimg">
        <arguments>
          <argument name="block_id" xsi:type="string">socialimg</argument>
        </arguments>
    </block>
</referenceBlock>
        <referenceBlock name="logo">
            <arguments>
                <argument name="logo_img_width" xsi:type="number">148</argument>
                <argument name="logo_img_height" xsi:type="number">43</argument>
            </arguments>
        </referenceBlock>
        <referenceContainer name="footer">
            <block class="Magento\Store\Block\Switcher" name="store_switcher" as="store_switcher" after="footer_links" template="switch/stores.phtml"/>
        </referenceContainer>
        <referenceBlock name="report.bugs" remove="true"/>
        <move element="copyright" destination="before.body.end"/>
    </body>
</page>
person user5762246    schedule 03.07.2016

Используйте следующий код для отображения статического блока на странице CMS:

{{block class="Magento\\Cms\\Block\\Block" block_id="block_identifier"}}

Используйте следующий код для отображения статического блока в файле phtml:

<?php echo $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('block_identifier')->toHtml();?>
person Swapna Taru    schedule 27.06.2016