Отобразить блок phtml на другой странице блока


Как M1 если мне нужно отобразить только какой-то phtml в другом блоке или странице, поэтому мы должны создать его в текущей теме, тогда мы можем восстановить его через xml или другой блок

Xml-код:

<the_layout_handle>
    <reference name="root">
        <block type="core/template" name="block1" template="path/to/file.phtml">
    </reference>
</the_layout_handle>

Затем в другом файле мы получаем это так: <?php echo $this->getBlockHtml('block1'); ?>

Пхтмл:

or directly like this: <?php echo $this->getLayout()->createBlock('core/template')->setTemplate('path/to/file.phtml')->toHtml(); ?>

Вопрос :

Непосредственно в файле я знаю, что бу как воспроизвести то же самое с помощью xml в M2?

phtml:

echo $this->getLayout()->createBlock("Magento\Framework\View\Element\Template")->setTemplate("Magento_Luma::path/to/file.phtml")->toHtml();

Проблема:

У меня есть некоторые phtml в app/design/frontend/Magento/Luma/template/block1.phtml

Я хочу отобразить его на домашней странице, поэтому в содержимом у меня есть следующее: {{block class="Magento\Framework\View\Element\Template" name="block1" template="Magento_Luma::template\block1.phtml"}} но это не работает!

Author: PЯINCƏ, 2018-01-27

1 answers

Если вы хотите показать пользовательский файл phtml на домашней странице, я думаю, что есть 2 способа сделать это.

Первый способ - вставить это на домашнюю страницу администратора:

{{block class="Magento\Framework\View\Element\Template" name="block1" template="Magento_Theme::block1.phtml"}}

И вы создаете свой block1.phtml в:

/приложение/дизайн/интерфейс/{поставщик}/{тема}/magento_theme/шаблоны/блок1.phtml

Второй способ - вставить блок шаблона следующим образом (например, внутри основного контейнера содержимого):

<referenceContainer name="content">
    <block class="Magento\Framework\View\Element\Template" name="block1" template="Magento_Theme::block1.phtml" before="-" />
</referenceContainer>

В:

/приложение/дизайн/интерфейс/{поставщик}/{тема}/Magento_Cms/layout/cms_index_index.xml

Используйте атрибут before, чтобы разместить новый блок в нужном месте внутри контейнера content.

Например before="other_block_name" помещает новый блок перед блоком other_block_name.

Вам также необходимо создать block1.phtml в Magento_Theme/templates

Кстати, вы можете изменить расположение шаблона на любой другой основной или пользовательский модуль. Magento_theme - это просто пример по умолчанию.

 1
Author: Lez, 2018-01-27 03:18:20