Magento Block Injection über module.xml Dateien

8

In einem Modul, das ich schreibe, möchte ich mit mymodule.xml meinen eigenen Block nach diesem Block einfügen:

%Vor%

, das in

verschachtelt ist %Vor%

wie in app / design / frontend / base / default / layout / catalog.xml

zu sehen ist

Ich habe viele Varianten ausprobiert wie:

%Vor%

und nur

%Vor%

und

%Vor%

aber ich kann nicht die richtige Kombination finden. Der einzige, der meinen Block rendert, ist:

%Vor%

aber offensichtlich ist es nicht dort platziert, wo ich es platzieren wollte.

    
epeleg 10.01.2011, 21:45
quelle

2 Antworten

18

Wenn Sie sich die Deklaration des Inhalts in page.xml ansehen, sehen Sie Folgendes.

%Vor%

Standardmäßig ist der Block namens content ein core/text_list , was in ein Mage_Core_Block_Text_List übersetzt wird.

Der Zweck eines core/text_list Blocks ist einfach. Sie rendern automatisch alle Blöcke, die in sie eingefügt wurden . Deshalb können Sie einen Block erfolgreich in den Inhalt einfügen.

Der Block den Sie einfügen möchten in

%Vor%

ist ein catalog/product_view , was zu einem Mage_Catalog_Block_Product_View führt, das letztendlich von Mage_Core_Block_Template erbt. Das macht es zu einem Template-Block. Vorlagenblöcke nicht rendern ihre untergeordneten Elemente automatisch. Template-Blöcke werden eine phtml -Datei darstellen. Wenn das phtml einen Aufruf an

enthält %Vor%

dann wird der Block mit diesem spezifischen Namen gerendert. Wenn die Datei phtml einen Aufruf an

enthält %Vor%

dann all werden die untergeordneten Blöcke gerendert.

Also, wenn du sagst

%Vor%

Sie fügen einen Block vom Typ mymodule/folder_class in den Block product.info ein. Da product.info jedoch ein Vorlagenblock und kein Textlistenblock ist, wird der von Ihnen eingefügte Block nicht gerendert. Sie müssen eine benutzerdefinierte catalog/product/view.phtml Vorlage zu Ihrem Design hinzufügen (indem Sie die Basisvorlage kopieren) und dann am unteren Rand von view.phtml hinzufügen

%Vor%     
Alan Storm 10.01.2011, 22:09
quelle
0

Wenn Sie den Block in catalog/product/view action hinzufügen möchten, sollten Sie es wie folgt angeben: Ersetzen Sie andernfalls catalog_product_view durch die gewünschte Aktion oder default für alle Aktionen.

%Vor%     
yvoyer 10.01.2011 22:11
quelle

Tags und Links