share

OXID Modulentwicklung – Hidden Feature: Reihenfolge der Block-Erweiterungen festlegen

Wenn in einem OXID-Shop mehrere Module aktiv sind, ist es gut möglich, dass zwei oder mehr Module den gleichen Template-Block überschreiben. Dabei kann es zu ungewollten Verschiebungen in der Reihenfolge der darzustellenden Elemente kommen. Praktischerweise wird in der Datenbanktabelle „oxtplblocks“ als „oxpos“ bereits eine Priorität für die Reihenfolge mitgespeichert. Diese ist jedoch für jeden Block standardmäßig auf „1“ gesetzt. Leider bietet das OXIDwiki derzeit keine Hinweise darauf, wie dieser Wert korrekt festzulegen ist.

Natürlich ließe sich der Wert direkt in der Datenbank anpassen. Eine viel angenehmere Möglichkeit bietet OXID jedoch, indem in der „metadata.php“ des jeweiligen Moduls einfach beim Block eine „position“ mit angegeben wird. Hier ein einfaches Beispiel:

In der Metadata von Modul 1:


'blocks' => array(
    array(
        'template' => 'page/checkout/basket.tpl',
        'block'    => 'basket_btn_next_bottom',
        'file'     => '/views/blocks/MODUEL_EINS_basket_next.tpl',
        'position' => '2'
    ),
),

In der Metadata von Modul 2:


'blocks' => array(
    array(
        'template' => 'page/checkout/basket.tpl',
        'block'    => 'basket_btn_next_bottom',
        'file'     => '/views/blocks/MODUL_ZWEI_basket_next.tpl',
        'position' => '3'
    ),
),

Nun wird auch definitiv erst der Block von Modul 1 und anschließend der Block von Modul 2 eingebunden.

Kommentare zu:

OXID Modulentwicklung – Hidden Feature: Reihenfolge der Block-Erweiterungen festlegen

  • Martin

    Wunderbar, genau das hab ich gesucht! Schade, dass sowas nicht dokumentiert ist.

    Sollte man mal das OXID Wiki dazu erneuern 😉

  • Kommentare geschlossen.