Добавьте файл.phtml на все страницы magento 2
Я хочу добавить свой пользовательский файл.phtml в начало всех страниц.
Как я могу сделать это с помощью пользовательского модуля?
Мы будем признательны за любое предложение.
Спасибо
4 answers
Добавьте этот код в свою пользовательскую тему или модуль в default.xml:
app/design/frontend/Namespace/Themename/Magento_Theme/layout/default.xml
<referenceContainer name="after.body.start">
<block class="Magento\Framework\View\Element\Template"
name="custom.file"
before="-"
template="Magento_Theme::html/custom.phtml"
/>
</referenceContainer>
Вы также можете разместить его в своем модуле:
app/code/Vendor/Module/view/frontend/layout/default.xml
<referenceContainer name="after.body.start">
<block class="Vendor\Module\Block\Blockname"
before="-"
template="Vendor_Module::html/custom.phtml"
/>
</referenceContainer>
В этом случае шаблон должен быть сохранен в разделе приложение/код/Поставщик/Модуль/представление/интерфейс/шаблоны/html/пользовательский.phtml
Попробуйте выполнить следующие шаги
Шаг:1 Создайте default.xml
в местоположении app\code\<Vendor-Name>\<Module-Name>\view\frontend\layout
и добавьте ниже код
<referenceContainer name="page.top">
<block class="Magento\Framework\View\Element\Template" name="custom-block-name" template="<Vendor-Name>_<Module-Name>::page\custom.phtml"/>
</referenceContainer>
ИЛИ
<referenceContainer name="main.content">
<block class="Magento\Framework\View\Element\Template" name="custom-block-name" template="<Vendor-Name>_<Module-Name>::page\custom.phtml"/>
</referenceContainer>
Шаг:2 Создайте custom.phtml
в местоположении app\code\<Vendor-Name>\<Module-Name>\view\frontend\templates\page\
и добавьте свой код
Например,
<?php
echo "Custom Block";
?>
Шаг:3 После выполнения команды компиляции
php bin/magento setup:di:compile
Добавьте пользовательский файл шаблона с помощью xml-блока в app/design/frontend/<VendorName>/<ThemeName>/Magneto_Theme/layout/default.xml
Используя тег referenceBlock, вы можете добавить свой пользовательский блок в блок заголовка/контейнер
<referenceContainer name="after.body.start">
<block class="Magento\Framework\View\Element\Template" name="custom.content" before="page-header" template="Magento_Theme::custom.phtml" />
</referenceContainer>
Вы можете использовать page.wrapper
для отображения тега перед заголовком.
<referenceContainer name="page.wrapper">
<block class="Magento\Framework\View\Element\Template" name="custompage" before="-" template="{Namespace}_{Modulename}::custompage.phtml" />
</referenceContainer>