cudowny poniedziałek

Dzień po weekendzie - poniedziałek, a do pracy jest kawałek... Na wstępie wyjazd prosto w korek, czemu miałby się od razu tak pięknie zacząć, ale zaczął się bo co jak co ale rmf o tej porze rozkłada na łopatki, nawet w największym korku w poniedziałkowy poranek śmiech w samochodzie jest dla bardzo wielu dziwną sprawą. Cóż, nie każdy ma ulubioną pracę do której właśnie jedzie. No dobra, lewy pas, but i jazda nie ma co się opierniczać i stać w miejscu w końcu trzeba dojechać.

Dojeżdżam pod biuro i czeka moje stałe miejsce na dzikim parkingu! Tak, parkuje i uwaga śledzie bo developer jedzie. Często mam wrażenie, że ludzie wiedzą że jestem programistą i mają takie swoje dziwne spojrzenia. No tak dev idzie do pracy, więc idźcie i wy rodacy.

Temaciki w pracy jakże bardzo przyjemne, bo czeka już na mnie integrowanie podziemne. Kumpel przyszedł po chorobie i trzeba bylo podzielić się zasilaniem z kontaktu. Dzisiejszy dzień bardzo spokojny, nie działo się zbyt wiele, ale za to pojawi się temacik, ponieważ zapewne nie jeden developer magento może mieć z tym problem.

Nadpisywanie modułów - modele, bloki, klasy pomocnicze (helpery - w angielskie wersji lepiej brzmi) i kontrolery dla anglojęzycznych podsyłam link gdzie jest to także dobrze opisane: http://inchoo.net/magento/overriding-magento-blocks-models-helpers-and-controllers

Dzisiaj napiszę krótką informację jak nadpisać blok, kwestia modelu i helperów wygląda podobnie i nie ma sensu opisywania ich szczegółowo.

Wszystko zaczynamy od stworzenia nowego modułu dla przykładu GJ_Example

struktura plików
app/etc/modules/GJ_Example.xml

w którym mamy następujący kod, aby nasz moduł był widoczny dla Magento

<?xml version="1.0"?>
<config>
    <modules>
        <GJ_Example>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Adminhtml />
            </depends>
        </GJ_Example>
    </modules>
</config>

żródło do naszego modułu app/code/local/GJ/Example [GJ_Example - będę sie tym posługiwać żeby nie pisać całej ścieżki za każdym razem]

Teraz możemy dla przykładu nadpisać lub rozszerzyć klasę do widoku pojedynczego zamówienia w administracji. Tworzymy 2 pliki pierwszy jest plikiem w którym dajemy informacje o nadpisaniu bloku w module Mage_Adminhtml

[GJ Example]/etc/config.xml
<?xml version="1.0"?>
<config>
    <modules> <!-- informacja o naszym module -->
        <GJ_Example>
            <version>1.0.0</version>
        </GJ_Example>
    </modules>
    <global> <!-- strefa gdzie nadpisujemy nasz blok (Jest takze adminhtml i frontend, ale o tym przy innej okazji) -->
        <blocks> <!-- jako ze nadpisujemy blok podajemy tutaj, taką informacje, dla modelu i zasobów (resource) byłoby models, a dla naszych pomocników (helperów) helpers -->
             <adminhtml> <!-- w tym miejscu mamy informacje o nadpisywanym module tzw. shortcode Mage_Adminhtml -->
                  <rewrite> <!-- dodajem tag kontrolny o nadpisywaniu _Block_ -->
                      <sales_order_view>GJ_Example_Block_Adminhtml_Sales_Order_View</sales_order_view> <!-- a tutaj dokładny adres do pliku nadpisywanego, czyli wszystko  oprócz Mage_adminhtml_block bo to wiemy z tagów powyżej czyli Sales_Order_View -->
                   </rewrite>
             </adminhtml>
         </blocks>
    </global>
</config> <!-- zamykamy wszystkie tagi i nasz plik konfiguracyjny jest gotowy -->

Teraz tworzymy plik PHP z ścieżką podaną poniżej
[GJ Example]/Block/Adminhtml/Sales/Order/View.php

a oto jego przykładowa zawartość

<?php

// oczywiście naszej góry nie ruszamy (czyli dokładnie tak powinna wyglądać implentencja bloku nadpisywanego
class GJ_Example_Block_Adminhtml_Sales_Order_View extends Mage_Adminhtml_Block_Sales_Order_View {

// napisz swój kod nadpisz sobie metodę lub rozszerz, teraz mała różnica między jednym a drugim

    // typ calkowitego nadpisania metody
    public function getEditUrl()
    {
        return $this->getUrl('*/sales_order_edit/akcja');
    }

// sposob rozszerzenia metody w bloku
    public function getHeaderText()
    {
        $this->getOrder()->setExtOrderId('twoje ext ID');
        return parent::getHeaderText();
    }
}

?>

W sumie to wszystko co trzeba zrobić żeby nadpisać blok. Czy to nie jest proste? Z pewnością jest oczywiście tylko wtedy jeśli ma się podstawy budowy magento. Jak dla mnie w magento 2 jest dużo lepsze używanie pluginów ale o tym w innym artykule.

A na sam koniec tak pięknego dnia, czekała na mnie pyszna kolacja, za co bardzo dziękuje mojej kochanej wspierającej mnie w każdy dzień kobiecie! :) A oto taka focia dla was "Papryczki faszerowane"

 22237186 1926896784225915 2010520602 n

Moja strona internetowa wykorzystuje cookies (ciasteczka). Dowiedz się więcej o celu ich używania i zmianie ustawień cookies w przeglądarce.

Korzystając ze strony wyrażasz zgodę na używanie cookie, zgodnie z aktualnymi ustawieniami przeglądarki.

Aby dowiedzieć się więcej przeczytaj Politykę prywatności zgodną z RODO (GDPR).