W poprzednim rozdziale opisałem jeden ze sposobów nadpisywania szablonów Magento na „frontendzie”, wykorzystując do tego celu własny motyw. Jest to najprostsza metoda, którą można wykorzystać również do przysłaniania „backendu”. Oczywiście nie zawsze, czasem będziemy zmuszeni skorzystać z własnego modułu aby rozszerzyć funkcjonalność danego widoku. Jest to druga najczęściej używana metoda, którą pasuje znać 😉 .
Dla przykładu nadpiszemy widok ze szczegółami zamówienia z modułu Magento_Sales.
W tym celu:
1. Utwórz moduł o nazwie np: Spin_Sales:
– app/code/Spin/Sales/etc/module.xml
1 2 3 4 |
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Spin_Sales" setup_version="1.0.0" /> </config> |
– app/code/Spin/Sales/registration.php
1 2 3 4 5 6 7 |
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Spin_Sales', __DIR__ ); |
2. Skopiuj plik szablonu ze szczegółami zamówienia – items.phtml, który znajduje się w lokalizacji:
– vendor/magento/module-sales/view/adminhtml/templates/order/view/items.phtml
i zapisz go do swojego modułu:
– app/code/Spin/Sales/view/adminhtml/templates/order/view/items.phtml
Zwróć uwagę na strukturę katalogów, która musi być analogiczna jak w oryginalnym położeniu: view/adminhtml/templates/order/view/items.phtml
3. Skopiuj plik z layoutem – sales_order_view.xml ze ścieżki:
– vendor/magento/module-sales/view/adminhtml/layout/sales_order_view.xml
do odpowiedniego katalogu w swoim module:
– app/code/Spin/Sales/view/adminhtml/layout/sales_order_view.xml
Edytuj plik, zmieniając w nim zapis, który odpowiada za wczytanie szablonu, czyli:
template=”Magento_Sales::order/view/items.phtml”
na:
template=”Spin_Sales::order/view/items.phtml”
1 2 3 4 5 6 |
// ... <block class="Magento\Sales\Block\Adminhtml\Order\View\Items" name="order_items" template="Spin_Sales::order/view/items.phtml"> // ... |
Oczywiście cała zawartość skopiowanego pliku sales_order_view.xml jest niepotrzebna, gdyż nadpisujemy jedynie szablon, tak więc można to uprościć do postaci:
1 2 3 4 5 6 7 8 9 |
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="order_items"> <arguments> <argument name="template" xsi:type="string">Spin_Sales::order/view/items.phtml</argument> </arguments> </referenceBlock> </body> </page> |
4. Z wiersza poleceń ssh aktualizujemy zmiany:
1 |
php bin/magento setup:upgrade |
Na koniec czyścimy cache:
1 2 |
php bin/magento cache:clean php bin/magento cache:flush |
i testujemy 🙂