Magento Theme Development Layout-filer

I den här artikeln kommer vi att täcka grunderna i Magento layout XML. 

Vi kommer att gå över local.xml och gör några grundläggande modifikationer. Detta inkluderar att lägga till och ta bort skript, ta bort block och lägga till layoutändringar.

Nu när vi har en grundläggande förståelse för temahierarkin från den första artikeln i denna serie, kommer vi att dyka lite djupare och förklara de templerande filerna.

Templerande filer består av två underkataloger, vilka är:

  • Layout: app / design / frontend ///layout/
  • Mall: app / design / frontend ///mall/

Det finns mycket att täcka, därför kommer jag att dela ut dem i sina egna artiklar. Idag kommer vi bara att täcka layoutaspekten. Mallen aspekt kommer att spelas in i nästa artikel.

Vänta innan vi ens kommer igång måste vi göra en viktig sak som är att avaktivera Magento-cachen, om du inte redan har gjort det, det är! Genom att göra så tillåter vi oss att se våra ändringar direkt istället för att uppdatera cacheminnet varje gång vi gör en förändring. Helst bör det stängas av under utveckling av en webbplats. För att göra detta loggar du in i adminområdet och går över till system> cache-hantering och inaktivera alla.

Nu är det sorterat låt oss börja.

Layout

Layoutmappen innehåller XML-filerna som i stor utsträckning dikterar vad som visas i butikens främre ände. Layoutstrukturen är ganska komplex i Magento, men det är en av anledningarna till att den gör den så kraftfull och flexibel. 

Du hittar hundratals XML-filer som varje gör sin egen sak, varje vy eller modul i app / kod / får den layout som anges av sin egen XML-fil. Om du någonsin installerar en tredjepartsmodul på din butik och det påverkar frontänden kommer det utan tvekan att ha en egen XML-fil.

Så, hur vet jag vilken fil som ska redigeras om jag behöver?

Tja, namngivningskonventionen av filerna gör det lättare att spåra när du behöver göra ändringar. Till exempel Magento app / code / core / Mage / Page / modulen har en egen XML-fil som heter app / design / frontend / bas / default / layout / page.xml som du kan se finns det ett mönster som börjar dyka upp här! När du väl har bekantat dig och gjort några butiker kommer du snart att märka lite repetitiveness och återkalla vilka filer du behöver redigera.

Notera:Var medveten om moduler från tredje part, som tekniskt kan utvecklaren namnge sin XML-fil vad de vill. I det här scenariot, om det inte finns i dokumentationen, måste du jaga filens namn i den modul som vanligtvis finns i config.xml fil. Observera inte att alla moduler har en XML-fil. Vanligtvis kommer XML-filen bara att vara närvarande om den påverkar butikens främre ände så förvänta dig inte en gång!

Vägen till config: app / code / local ///etc/config.xml

Observera jag har refererat bas / default ovan, kom ihåg att dessa är där kärnfilerna är bosatta, om du behöver göra ändringar, kopiera det alltid till dig själv paket / tema aldrig redigera bas / default filer. 

Såhär:

app / design / frontend / bas / default / layout / page.xml

kopia till:

app / design / frontend ///layout/page.xml

Tunga modifiering av dessa filer kräver erfarenhet och med det här är en nybörjare handledning, ligger det utanför ramen för denna serie; Jag kommer dock att springa igenom local.xml och hur detta knyter samman med temat utveckling samt täcker en handfull grundläggande ändringar som jag tror kommer att vara användbara.

Vad är local.xml?

Enkelt sagt, det är en fil som placeras i vår temat layoutmapp som kommer att rymma en stor del av våra överskridanden eller uppdateringar till XML-referenser för det temat. Det anses bra praxis och Magento rekommenderar det. Vi kunde se på det som Magento-versionen av WordPress functions.php fil.

Vänta, en "stor del" varför inte "alla" av våra överskridanden eller uppdateringar?

Det finns en debatt om detta ämne och om vi gjorde lite forskning hittar vi alla har sin egen åsikt. Vissa säger bara att använda local.xml och gör inte ändringar någon annanstans medan andra kommer att vara oense, så ta inte följande set i sten.

Personligen tycker jag att det är ett bra ställe för små ändringar, till exempel att lägga till block, ta bort block eller ändra mallar. Det är inte en plats att helt layouta din produktsida eller liknande, om du vill göra det gör du det i den relevanta filen, t.ex. catalog.xml

Ja, det kan spara oss lite tid när vi uppgraderar Magento eftersom alla våra ändringar finns i en enda fil men får alla våra ändringar i en enda fil i första hand, med alla huvudvärk för att försöka åsidosätta andra XML-filer, det blir enkelt uppvägt.

Vidare när vi gjorde en hel del ändringar på en sida vill vi helst referera till den andra XML som ingår i den sidan, vi måste hela tiden växla mellan de två filerna och slutligen splittrade funktionaliteten mellan två separata filer - inte vad vi verkligen vill ha!

Så, hur man sätter upp det ...

Skapa local.xml filen i vår temat layoutmapp app / design / frontend //default/layout/local.xml och lägg till några grundläggande XML-markupstrukturer:

    

Nu när vi har filen klar kommer jag att visa dig en handfull vanliga tekniker.

1. Lägga till och ta bort skript / stilark

En mycket vanlig modifikation är att lägga till eller ta bort JavaScript och CSS. Om du arbetar med jQuery måste du lägga till detta eftersom Magento inte inkluderar det som standard och någon anpassad JavaScript du behöver behöver också lägga till i.

Om vi ​​tittar på källan på en Magento-installation ser vi att en hel massa JavaScript tas in, av vilka vi inte kommer att använda, i vilket fall det behöver flyttas eftersom det är onödigt http begäran - Magento är inte snabb så låt oss göra grunderna rätt!

För att inkludera en fil måste vi bestämma om det kommer att vara globalt, t.ex. på varje sida i vår butik eller bara vissa områden. Med detta kan vi välja rätt layouthandtag att använda.

Jag ska presentera två layout handtag, och . Naturligtvis finns det många fler tillgängliga för oss, men för närvarande kan vi fokusera på just dessa.

De Handtaget är globalt och kommer att påverka alla sidor medan kommer bara att påverka hemsidan.

Nu vidare till koden.

     skin_jsjs / libs / jquery.min.js       ]]>     skin_jsjs / libs / modernizr.min.js skin_jsjs / libs / html5shiv.min.jsIE 9 skin_jsjs / libs / respond.min.jsIE 9 skin_jsjs / libs / selectivizr.min.jsIE 9  skin_csscss / widgets.css skin_csscss / print.css skin_csscss / stilar-ie.cssIE 8 skin_jsjs / ie6.jsIE 7 jslib / ds-sleight.jsIE 7      skin_jsjs / libs / home.min.js skin_csscss / home.css   

Det händer ganska mycket här men när det är uppdelat är det relativt rakt framåt.

 typ av fil / plats sökväg till filen 
  1. Metod är där vi anger vad vi vill uppnå
  2. Skriv referenser om vilken typ av fil det är och dikterar också var filen ligger i hierarkin.
  3. Namn är där vi anger sökvägen till filen

Uppföljning på punkt två: Det dikterar också var filen ligger i hierarkin, varje typ hänvisar till en annan position i hierarkin som blir upplagd till vad du anger i fält. Jag har listat dem nedan för referens:

  • skin_js: hud / frontend // Default / name
  • skin_css: hud / frontend // Default / name
  • js: js / name

Observera att laddning av en fil från en extern källa, t.ex. en CDN, har en något annorlunda syntax. Det är också viktigt att inkludera jQuery.noConflict (); i slutet för att undvika att jQuery står i konflikt med Magento inbyggt i Prototype-biblioteket.

2. Ta bort block

Magento levereras med flera sidostänger som gör att vi möter det, vi använder aldrig i en verklig situation, till exempel "Back to School" -annonsen. Nedan finns två metoder vi kan använda: 

       right.poll   

De ta bort Metod är ett bra sätt att ta bort ett block oavsett vilket layouthandtag som fylls i blocket, ibland vill vi bara att den är borta globalt oavsett var den är och aldrig återvända!

Å andra sidan unsetChild tar bara bort ett block från ett specifikt layouthandtag. Du kan se att jag ringer det inom höger layouthandtag så det kommer bara att tas bort därifrån. Om right.poll block heter från någon annanstans i en annan layout handtag det kommer att visas.

3. Lägga till en layoutändring

Här har vi ett exempel på att lägga till ett ytterligare strukturblock till hemsidan. Vi hänvisar till innehållsblocket och använder efter tagg för att ange blocket som ska visas i slutet av innehållsblocket.

       

4. Lägga till ett statiskt CMS-block

Slutligen har vi ett exempel på att lägga till i ett statiskt CMS-block, men först måste du skapa en för att detta ska fungera.

När du är inloggad i adminområdet, går du vidare till CMS> Statiska block och lägg till ett nytt block. Notera "Identifier" som vi behöver referera till i XML-koden.

     home_static_block    

Inom block_id är där vi anger vår identifierare.

Vidare läsning

Vi har knappt repat ytan och det finns många andra användningsområden för XML, för att inte tala om mer layouthandtag och XML-taggar tillgängliga för oss. Magento layout själv garanterar att det är en serie som det finns en hel del att täcka, för nu håller jag den till bara grunderna.

Om du vill göra lite mer läsning på XML rekommenderar jag att du läser den här artikeln och även ladda ner en kopia av Magento Official Design Guide som går in i mer djup och har en bra förklaring av de andra XML-taggar vi kan använda.

Vad kommer härnäst?

I nästa artikel kommer vi att skjuta framåt och titta på mallfilerna.