Отобразить блок 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"}}
но это не работает!
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
- это просто пример по умолчанию.