magento
Wykonanie
Szukaj…
Uwagi
Dostosowywanie podstawowej funkcjonalności za pomocą motywów
Motywy mają pliki układu, które można między innymi wykorzystać do zmiany bloków pojawiających się na stronie. Szablon bloku można również zmienić i wywołać różne metody.
Projekty na poziomie sklepu
Hierarchiczne motywy strukturalne Magento oznaczają, że motyw podstawowy można rozszerzyć i przypisać na poziomie sklepu.
Rejestrowanie niestandardowych motywów
Motywy można skonfigurować na trzy sposoby:
- Na sklep w System> Konfiguracja> Projekt.
- Zmiana projektu z terminami System> Projekt.
- Wyjątki tematyczne można również ustawić na poziomie kategorii i produktu.
Pakiet a motyw
Pakiet ma wiele motywów. Każdy z motywów w pakiecie dziedziczy z domyślnego motywu w pakiecie.
Projekt Fallback
Procedura zastępowania kompozycji w celu zlokalizowania plików szablonów jest następująca:
- {package} / {theme}
- {pakiet} / default
- podstawowa / domyślna
Aby dodać kolejne katalogi do mechanizmu zastępczego motywu, należy przepisać Mage_Core_Model_Design_Package :: getFilename
Dla obszaru administracyjnego rezerwa jest domyślna / domyślna.
Ścieżki szablonu i układu
Bloki
Bloki są używane do wydruku. Blok główny jest rodzicem wszystkich bloków i jest typu Mage_Page_Block_Html.
Bloki Mage_Core_Block_Template używają plików szablonów do renderowania treści. Nazwa pliku szablonu jest ustawiana w setTemplate () lub addData („szablon”) za pomocą ścieżek względnych.
Szablony to tylko fragmenty PHP zawarte w Mage_Core_Block_Template. Dlatego $ to w szablonie odnosi się do bloku.
Mage_Core_Block_Template używa bufora przed dołączeniem szablonu, aby zapobiec przedwczesnemu wyjściu.
Metoda Mage_Core_Model_Layout :: createBlock tworzy instancje bloków.
Klasa Mage_Core_Model_Layout_Update rozważa, które bloki należy utworzyć dla każdej strony, patrząc na uchwyty układu.
Wszystkie bloki wyjściowe są renderowane, np. Przez wywołanie metody toHtml (), która z kolei może wybrać renderowanie swoich dzieci.
Bloki Text i Text_List automatycznie renderują ich zawartość.
Istnieją dwa zdarzenia, które są uruchamiane wokół renderowania bloku, których można użyć do zmodyfikowania bloku przed i po renderowaniu HTML:
core_block_abstract_to_html_before core_block_abstract_to_html_after Blok podrzędny będzie renderowany tylko automatycznie, jeśli należy do klasy Mage_Core_Block_Textlist, w przeciwnym razie należy wywołać metodę getChildHtml.
Dostęp do instancji bloków można uzyskać poprzez układ, np. Mage :: app () -> getLayout () i $ controller-> getLayout (). Wyjście bloku jest kontrolowane przez funkcję _toHtml ().
Szablony są renderowane za pomocą metod renderView () / fetchView () w bloku szablonu. Buforowanie danych wyjściowych można wyłączyć za pomocą $ layout-> setDirectOutput.
Możliwe jest dodanie bloku do bieżącego układu, ale należy to zrobić przed wywołaniem metody renderLayout ().
Układ XML
<reference>
-edit a block
<block>
- define a block
<action>
- call method on a block
<update>
- include nodes from another handle.
Pliki układu można zarejestrować w pliku config.xml:
<config>
<{area}>
<layout>
<updates>
<{name}>
<file>{filepath}</file>
</{name}>
</updates>
</layout>
</{area}>
</config>
Dane wyjściowe strony można dostosować na następujące sposoby:
- Zmiany szablonu
- Zmiany układu
- Przesłanianie bloków
- Zmienne obserwatorów na blokach można ustawić na następujące sposoby:
- Układ - poprzez akcje lub atrybuty
- Kontroler - $ this-getLayout () -> getBlock ()
- Bloki potomne - $ this-> getChild ()
- Inne -Mage :: app () -> getLayout ()
Aktywa bloku głównego
JavaScript i CSS są obsługiwane w bloku Mage_Page_Block_Html_head. Ten blok obsługuje scalanie zasobów w jeden plik, aby zminimalizować żądania HTTP. Scalony plik jest oparty na czasie edycji plików źródłowych.
Podczas scalania CSS wywoływana jest funkcja zwrotna w Mage_Core_Model_Design_Package w celu zaktualizowania dowolnych dyrektyw @import lub url () o poprawne adresy URL
Różne mechanizmy blokowania wyjścia bloku
- Jeśli odpowiedź została już utworzona i ustawiona na obiekcie odpowiedzi poza zwykłym procesem renderowania (np. W obserwatorze), flagę „no-renderLayout” można ustawić na kontrolerze akcji za pomocą
Mage::app()->getFrontController()->getAction()->setFlag('','no-renderLayout');
- Zapobiega
renderLayout()
przetwarzaniu bloków wyjściowych przezrenderLayout()
. - To samo można osiągnąć, wywołując setNoRender (true) na przednim kontrolerze:
Mage::app()->getFrontController()->setNoRender(true);
- Ustawienie flagi
isDispatched()
na obiekcie odpowiedzi może być bardziej wydajne, aby osiągnąć podobny efekt.
różne rodzaje bloków
- Mage_Core_Block_Template
- Mage_Core_Block_Text_List
- Mage_Core_Block_Messages
- Mage_Core_Block_Text_Tag
- Mage_Core_Block_Text
- Mage_Page_Block_Template_Links Wszystkie bloki są blokami strukturalnymi lub Wszystkie bloki są blokami strukturalnymi lub blokami treści. Przykład:
- core / lista_tekstów
Przykład bloku strukturalnego .
Nie wykorzystuje szablonów; służy po prostu do wyświetlania zawartości wszystkich swoich bloków potomnych jeden po drugim.
- rdzeń / szablon
Przykład bloku zawartości .
Wyjście tego typu bloku zależy od przypisanego szablonu. Bloki potomne są wyprowadzane w szablonie za pomocą metody getChildHtml („nazwa_bloku”). Przykład: core / text_list - Przykład bloku strukturalnego. Nie wykorzystuje szablonów; służy po prostu do wyświetlania zawartości wszystkich swoich bloków potomnych jeden po drugim. core / template - Przykład bloku zawartości. Wyjście tego typu bloku zależy od przypisanego szablonu. Bloki potomne są wyprowadzane w szablonie za pomocą metody getChildHtml („nazwa_bloku”).
Dostęp do instancji bloku można uzyskać ze sterownika
Z kontrolera akcji:
$this->getLayout()->getBlock('head')->getTemplate();
/**
* Get specified tab grid
*/
public function gridOnlyAction()
{
$this->_initProduct();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/catalog_product_edit_tab_' .
$this->getRequest()->gerParam('gridOnlyBlock')
)
->toHtml()
);
}