Configurația Magento de la un layout-to-me-actualizări

Cred că aproape toată lumea își începe cunoștința cu Magento, editând tema standard, adăugând noi blocuri sau schimbând cele vechi. Aceasta face parte din vizualizarea de la triplet MVC buccas și este destul de dificil pentru începători, așa că vă sugerez să înțeleg ce fel de fișiere xml sunt în directorul de layout.







Pagina - caramida la caramida

În Magento, paginile sunt construite folosind blocuri folosind șabloane care au extensia * .phtml. Orice fișier phtml este un cod html valid. Rezultatul final este creat prin decorare, adică inserând un bloc în altul. Un bun desen pentru înțelegerea esenței a fost găsit în ghidul de la Symfony1.4

Aici totul funcționează la fel de bine. La livrarea temei standard există 4 layout-a: 1 coloană, 2 coloane cu bară stângă, 2 coloane cu dreapta, 3 coloane.

Aproape fiecare modul are un fișier de actualizare a aspectului - xml, care adaugă funcționalitate suplimentară la partea de vizualizare. Fișierele de configurare ale planurilor au mai multe directive de bază: mâner, referință, blocare, acțiune, eliminare. Să luăm în considerare fiecare dintre ele separat.

Putem spune literal că este un cârlig, pe care puteți închide mai multe blocuri. Dar îmi imaginez ca un eveniment, pe care blocul blochează și când apare (evenimentul) apare, blocul va fi procesat și afișat utilizatorului. Manerele sunt generate de controler. Clasa de separare a Mage_Core_Controller_Varien_Action vedea că orice acțiune generat 4 standard de mâner-a: implicit (în metoda loadLayout) și 3, din care unul este responsabil pentru subiectul selectat, al doilea pentru modulul curent, controlerul și acțiunea iar al treilea pentru magazin curent (în metoda addActionLayoutHandles)

De asemenea, uita-te mai detaliat cu privire la metodele și loadLayout renderLayout poate ghici că mâner-urile pot fi generate în mod dinamic, în funcție de anumite condiții, cum ar fi se face în Mage_Catalog_CategoryController

Descrierea principală a tuturor paginilor este în pagina.xml. Dacă îl deschideți, veți vedea mânerul nostru (implicit .print.page_empty. Coloana Page_one_col., Etc.)

Cu această directivă puteți accesa blocul și puteți apela anumite acțiuni sau adăuga blocuri de tip copil, la fel ca în exemplul de mai sus, handle = coloana_pagină. Se face referire la structura de sus a blocului rădăcină și se stabilește un alt șablon de afișat.

Această directivă are atributul name. în care indicăm numele blocului la care vrem să ne adresăm. Aproape toate blocurile au propriul nume unic. Când scrieți actualizările de aspect, dați nume tuturor blocurilor pe care va trebui să le schimbați în viitor.

Blocul este inima întregii structuri. Are mai multe atribute:







  • tip - Magento este calea care indică clasa bloc. De exemplu, "cms / block" indică clasa Mage_Cms_Block_Block. care este în app / code / core / Mage / Cms / Block / Block.php. Dacă nu aveți nevoie de o logică specifică de prelucrare a blocurilor, ci doar doriți să ieșiți un șablon, atunci utilizați "core / template"
  • nume - numele unic al blocului, este necesar ca apoi să se poată adresa acestuia prin directivă de referință
  • așa cum este un alias pentru numele blocului, dacă doriți să accesați blocul din cod utilizând metodele blocului părinte getChild sau getChildHtml.
  • ifconfig este calea de configurare, blocul va fi afișat numai dacă valoarea setării este adevărată
  • după - specifică numele blocului după care este dată
  • înainte - specifică numele blocului înaintea căruia trebuie imprimat. Dacă specificați un semn minus ("-"), atunci blocul va fi afișat în primul rând în părintele său
  • șablon - specifică șablonul pentru bloc
  • traduce - specifică etichetele (noduri, noduri) ale căror conținut trebuie traduse. Etichetele sunt scrise cu un spațiu

De exemplu, vom lista toate noutățile din lista principală

Există câteva nume de bloc standard: rădăcină. la stânga. dreapta. conținut.

Cu această directivă, puteți apela metodele blocului, după inițializare. Are atributul metodei. în care se specifică numele metodei. Argumentele sunt enumerate în etichete, numele etichetelor nu sunt utilizate. În metodă, argumentele sunt transmise în ordinea în care au fost scrise în fișierul xml, de exemplu, am setat un alt șablon pentru root

Cu această directivă, puteți șterge blocuri. Are un nume de atribut - numele blocului care trebuie șters. De exemplu, eliminați bannerele enervante din tema standard

Punem puncte peste i

Ce trebuie să faceți dacă doriți să adăugați un bloc copil la conținut, dar nu corectați fișierul page.xml. Trebuie să utilizați referința!

Tot ceea ce se află în interiorul referinței poate fi considerat că se află în interiorul blocului cu numele dat.

Block pot fi stocate într-un alt bloc de referință specificat sau (atunci când este vorba de o unitate de copil și accesul la acesta de la părintele este accesat prin prima metodă parametru getChild care -. Unitate Elias, adică, ca conținutul acestui atribut este, dacă doriți să contactați. la blocul de la registrul de cod la el un alias), de asemenea, poate fi mânerul interior (ca bloc cu numele rădăcină, vezi pagina.xml).

P.S .. asta e tot. Sper că materialul va ajuta foarte mult pe începători, din moment ce toate astea mi-au trecut prin umflătura mea. Am de gând să scriu o serie de articole despre fișierele de configurare din Magento. Așteptați continuarea

UPD: am uitat să menționez eticheta de actualizare. Are un atribut de mâner. da, acesta este numele directivei înseși, care a fost menționată mai sus. O directivă poate fi localizată numai în interiorul unui alt mâner -a, transferă toate blocurile de la mânerul specificat -a la cel în care este înregistrat, de exemplu

Toate directivele de la client_account vor fi utilizate în handle-ul client_account_edit -e. Este folosit pentru a evita suprapunerea acelorași directive.

Serezha, cu actualizarea freaksidea, chiar îți place articolele tale. Aș dori să clarific. Cum să înțelegeți unde sunt descrise toate directivele, cum ar fi eliminarea.
Sau unde se ocupă implicit, imprimați, page_empty, column_one_column, etc. atributele bloc? cu acțiuni (și) nu este, de asemenea, în întregime clară. un fel ca acestea sunt descrise în Block'e. cum ar fi aceasta
insider / insider.js
în Mage_Core_Page_Block_Html_Head
dar unde este metoda = "setImgSrc"
cu catalog.xml.
În general, Serghei de unde să atragă. dacă nu este dificil.

directivele pot fi descrise oriunde, într-unul din fișierele de actualizare a aspectului. Toate aceste fișiere sunt combinate la deschiderea paginii și pentru a obține un XML mare.

Actualizat articol sper că descrierea va ajuta să înțeleagă







Trimiteți-le prietenilor: