2014-02-22 13 views
5

Zunächst möchte ich sagen, dass ich diesen ganzen Tag im Internet gesucht habe und nicht finden konnte, was ich wollte. Ich bin auch ein Neuling, also bitte vergib mir, wenn ich irgendeine Regel gebrochen habe.Wie platziere ich meinen benutzerdefinierten Block in einem anderen Block in Magento mit Layout-XML?

Ich versuche ein Modul zu entwickeln, das Videos zur Produktseite zusammen mit Bildern hinzufügen wird. Ich stecke in diesem Konzept fest:

Wie füge ich meinen Block in einen vorhandenen Basisblock ein? Auf der Produktseite gibt es beispielsweise einen Block product.info. Innerhalb dieses Blocks gibt es "Verfügbarkeit", "Preis" usw. Wie füge ich meinen benutzerdefinierten Block direkt unter "Verfügbarkeit" und über "Preise" mit meinem Layout xml Layout und Vorlage.

<catalog_product_view translate="label"> 
     <reference name="content"> 
      <reference name="product.info"> 
       WRITE BLOCK HERE SO THAT MY BLOCK SHOWS BELOW AVAILABLITY 
      </reference> 
     </reference> 
    </catalog_product_view> 

Ist das möglich:

Also ich versuche, so etwas wie diese mit meinem Modul Layout-Datei zu erreichen? oder Muss ich die Kernklasse Mage_Catalog_Block_Product_View dafür überschreiben?

PS: Grundsätzlich ist mein Ziel, meine Videos neben Bildern aufzulisten. Momentan kann ich meine Videos aus dem Modul auflisten, aber in diesem Fall werden keine Bilder angezeigt. Ich benutzte

<block type="myblock/myblock" name="somename" as="media" template="abc.phtml"/> 

Also ich möchte meinen Block an den vorhandenen Inhalt anhängen.

Antwort

1

ich es gelöst. Ich musste die Mage_Catalog_Block_Product_View_Media neu schreiben.

In meiner Klasse I die Funktion _toHtml Funktion wie diese über los:

public function _toHtml() 
{ 
    $html = parent::_toHtml(); 
    $html.=$this->getChildHtml('media_video'); 
    return $html; 
} 

wo "media_video" mein Block ist. Mein Layout XML-Datei:

<catalog_product_view translate="label"> 
    <reference name="content"> 
     <reference name="product.info"> 
      <reference name="product.info.media"> 
      <block type="myblock/myblock" name="somename" as="media_video" template="beta/abc.phtml" 
        before="-"/> 
      </reference> 
     </reference> 
    </reference> 
</catalog_product_view> 
1

Sie können einen neuen Block hinzufügen, anstatt übermäßig vorhanden zu sein.

<catalog_product_view translate="label"> 
    <reference name="content"> 
     <reference name="product.info"> 
    <block type="myblock/myblock" name="somename" as="media_new" template="abc.phtml"/> 
     </reference> 
    </reference> 
</catalog_product_view> 

Erhalten neuen Block mit folgendem Code in phtml Datei

<?php echo $this->getChildHtml('media_new') ?> 

Dank

+1

Wo gebe ich den getChildHtml ein? In meiner Vorlage oder in der Vorlagendatei des Themas? Da ich versuche, ein Drittanbieter-Modul zu erstellen, sollte ich keine vorhandenen Dateien bearbeiten. –

1

Hinweis output="toHtml" im Code unten. Dies wird Ihren Block in product.info Abschnitt drucken.

<catalog_product_view translate="label"> 
    <reference name="content"> 
     <reference name="product.info"> 
      <block type="myblock/myblock" name="somename" as="media" 
       template="abc.phtml" output="toHtml" before="-" /> 
     </reference> 
    </reference> 
</catalog_product_view> 
Verwandte Themen