Magento 2: переопределить файл .phtml в пользовательском модуле

Я новичок в Magento 2 и еще не совсем понимаю его структуру. Я использую образцы данных для исследования кода. Я хочу переопределить файл .phtml с помощью специального модуля. Файл, который я хочу переопределить:

vendor/magento/module-customer/view/frontend/templates/account/dashboard/info.phtml

Пока что я создаю файл по этому пути:

src/app/code/NewModule/NewModuleTest/view/frontend/templates/customer/account/dashboard/info.phtml

Я копирую исходный файл в этот и вношу несколько простых изменений, например добавляю тег или меняю текст. После этого я запускаю команду:

bin/magento setup:upgrade

bin/magento cache:clean

Но ничего не происходит. Я не знаю, упускаю ли я что-нибудь. Я также очищаю кеш браузера. Пожалуйста, помогите мне. Любые идеи приветствуются. Спасибо вам всем!

P/s: не знаю, связано ли это, я устанавливаю Magento из этого репозитория на Github: Docker Magento

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
68
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно создать файл макета для обновления этого шаблона .phtml, например:

NewModule/NewModuleTest/view/frontend/layout/customer_account_dashboard_index.xml

и добавьте этот контент:

<?xml version = "1.0"?>
<page xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name = "customer_account_dashboard_info">
            <action method = "setTemplate">
                <argument name = "template" xsi:type = "string">NewModule_NewModuleTest::customer/account/dashboard/info.phtml</argument>
            </action>
        </referenceBlock>
    </body>
</page>

Файл customer_account_dashboard_index.xml предназначен для конкретной страницы, которую вы хотите изменить. Он использует тег для изменения блока customer_account_dashboard_info, устанавливая шаблон в ваш собственный файл .phtml.

Это выглядит именно так, как я просил в ChatGPT. Но это не сработало Т.Т.

Stern 17.07.2024 04:16

Вы обязательно хотите использовать собственный модуль? Если это только css/js/.phtml, вы можете просто создать собственную тему и расширить тему Magento по умолчанию.

Loiku 17.07.2024 08:03

Ага. Я хочу использовать собственный модуль. Потому что благодаря этому я могу просто предоставить это клиентам

Stern 17.07.2024 10:58
Ответ принят как подходящий

Я понял, как это сделать

Определите файлы, которые вы хотите переопределить

  • Исходный файл шаблона:

vendor/magento/module-customer/view/frontend/templates/account/dashboard/info.phtml

  • Исходный файл макета:

vendor/magento/module-customer/view/frontend/layout/customer_account_index.xml

  • Исходный блок внутри файла макета (куда назначен этот шаблон):
<block class = "Magento\Customer\Block\Account\Dashboard\Info" name = "customer_account_dashboard_info" as = "info" template = "Magento_Customer::account/dashboard/info.phtml" cacheable = "false">
    <container name = "customer.account.dashboard.info.blocks" as = "additional_blocks"/>
</block>

Переопределить шаги

  • Создайте файл макета, одноименный с исходным именем:

app/code/NewModule/NewModuleTest/view/frontend/layout/customer_account_index.xml

  • Поместите код с тегом referenceBlock и «именем» исходного блока.
<?xml version = "1.0"?>
<page xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name = "customer_account_dashboard_info" template = "NewModule_NewModuleTest::customer/account/dashboard/info.phtml"/>
    </body>
</page>
  • Создайте файл шаблона .phtml: /app/code/NewModule/NewModuleTest/view/frontend/templates/customer/account/dashboard/info.phtml

Тогда дело сделано!

Другие вопросы по теме