Sök…


Anmärkningar

Anpassa kärnfunktionalitet med teman

Teman har layoutfiler som bland annat kan användas för att ändra vilka block som visas på sidan. Blockmallen kan också ändras och olika metoder kallas.

Design på butiknivå

Magentos hierarkiska strukturerade teman innebär att ett bastema kan utökas och tilldelas på butiknivå.

Registrera anpassade teman

Teman kan konfigureras på tre sätt:

  1. Per butik under System> Konfiguration> Design.
  2. Designändring med tidsgränser System> Design.
  3. Temaundantag kan också ställas in på en kategori och produktnivå.

Paket kontra tema

Ett paket har flera teman. Var och en av teman i ett paket ärver från standardtemat i ett paket.

Design Fallback

Teman fallback procedur för att hitta mallar filer är:

  1. {Paketet} / {tema}
  2. {Paketet} / default
  3. bas / default

För att lägga till ytterligare kataloger till teman fallback-mekanism måste Mage_Core_Model_Design_Package :: getFilename-metoden skrivas om

För adminområdet är fallback default / default.

Mall- och layoutvägar

Blocks

Block används för utgång. Rotblocket är överordnade till alla block och är av typen Mage_Page_Block_Html.

Mage_Core_Block_Template block använder mallfiler för att återge innehåll. Mallfilsnamnet ställs in inom setTemplate () eller addData ('mall') med relativa banor.

Mallar är bara delar av PHP som ingår i Mage_Core_Block_Template. Därför hänvisar detta i en mall till blocket.

Mage_Core_Block_Template använder en buffert innan den inkluderar en mall för att förhindra för tidig utmatning.

Metoden Mage_Core_Model_Layout :: createBlock skapar instanser av block.

Klassen Mage_Core_Model_Layout_Update överväger vilka block som måste skapas för varje sida genom att titta på layouthandtagen.

Alla utgångsblock återges, t.ex. genom att ringa tillHtml (), som i sin tur kan välja att göra sina barn.

Text och Text_List-block återger automatiskt sitt innehåll.

Det finns två händelser som avfyras kring blockering som kan användas för att ändra blocket före och efter rendering av HTML:

core_block_abstract_to_html_before core_block_abstract_to_html_after Ett barnblock kommer endast att återges automatiskt om det är av klass Mage_Core_Block_Textlist annars måste getChildHtml-metoden kallas.

Blockinstanser kan nås via layouten, t.ex. Mage :: app () -> getLayout () och $ controller-> getLayout (). Blockutgång styrs av funktionen _toHtml ().

Mallar återges med renderView () / fetchView () -metoderna i ett mallblock. Utgångsbuffert kan inaktiveras med $ layout-> setDirectOutput.

Det är möjligt att lägga till ett block i den aktuella layouten men det måste göras innan renderLayout () -metoden anropas.

Layout XML

<reference>
  -edit a block
<block>
  - define a block 
<action>
  - call method on a block
<update>
  - include nodes from another handle.

Layoutfiler kan registreras i config.xml:

<config>
    <{area}>
        <layout>
            <updates>
                <{name}>
                    <file>{filepath}</file>
                </{name}>
            </updates>
        </layout>
    </{area}>
</config>

Sidoutput kan anpassas på följande sätt:

  • Malländringar
  • Layoutändringar
  • Övervägande block
  • Observatörsvariabler på block kan ställas in på följande sätt:
  • Layout - Genomförande åtgärder eller attribut
  • Controller - $ this-getLayout () -> getBlock ()
  • Barn blockerar - $ detta-> getChild ()
  • Other -Mage :: app () -> getLayout ()

Huvudblockstillgångar

JavaScript- och CSS-tillgångar hanteras i Mage_Page_Block_Html_head-blocket. Detta block hanterar sammanslagning av tillgångar till en enda fil för att minimera HTTP-förfrågningar. Den sammanslagna filen är baserad på redigeringstiden för källfilerna.

När CSS slås samman kallas en återuppringningsfunktion på Mage_Core_Model_Design_Package för att uppdatera alla @import- eller url () -direktiv med rätt URL: er

Olika mekanismer för att inaktivera blockutgång

  • Om svaret redan har skapats och ställts in på svarobjektet utanför den vanliga återgivningsprocessen (t.ex. i en observatör), kan flaggan 'no-renderLayout' ställas in på åtgärdsstyrenheten med
Mage::app()->getFrontController()->getAction()->setFlag('','no-renderLayout');
  • Detta förhindrar renderLayout() från att bearbeta utgångsblocken.
  • Detsamma kan uppnås genom att ringa setNoRender (true) på frontkontrollen: Mage::app()->getFrontController()->setNoRender(true);
  • Att ställa in isDispatched()isDispatched() kan vara mer effektivt för att uppnå en liknande effekt.

olika typer av block

  • 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 Alla block är antingen strukturblock eller Alla block är antingen strukturblock eller innehållsblock. Exempel:
  • kärna / text_list

Exempel på ett konstruktionsblock .

Det använder inte mallar; det används helt enkelt för att mata ut innehållet i alla sina barnblock efter varandra.

  • kärna / mall

Exempel på ett innehållsblock .

Utgången från denna typ av block beror på den tilldelade mallen. Det är underordnade block blockeras i sin mall via getChildHtml ('block_name') -metoden .. Exempel: core / text_list - Exempel på ett strukturblock. Det använder inte mallar; det används helt enkelt för att mata ut innehållet i alla sina barnblock efter varandra. core / mall - Exempel på ett innehållsblock. Utgången från denna typ av block beror på den tilldelade mallen. Det är underordnade block blockeras i sin mall via metoden getChildHtml ('block_name').

Blockinstanser kan nås från regulatorn

Från en handkontroll:

$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()
);
}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow