Magento – Produktindividuellen Inhalt als Tab in Produktdetails hinzufügen

Bild

Wir wollten für einen Shop in der Produktbeschreibung unten zu den schon vorhandenen Tabs wie “Beschreibung“, “Zusatzinformation“, “Upselling” etc. noch einen weiteren Tab hinzufügen, um weitere Informationen durch ein Artikelattribut anzeigen zu können. In diesem konkreten Fall ging es um das Hinzufügen von einem “FAQ” Reiter. Im Artikel selber sollte es dann ein Attribut geben, welches gepflegt wird, um dann dort unten angezeigt werden zu können.

Als erstes haben wir hierzu eine faq.phtml Datei im Ordner /app/design/frontend/[default oder base]/[IhrTemplate]/template/catalog/product/view angelegt. Dort hinein kam dann folgender Code:

<?php if(count($this->getProduct()->getFaq())): ?>
<div class="product-specs">
<?php echo $this->getProduct()->getFaq() ?>
</div>
<?php endif ?>

Anschließend benötigen wir noch eine faq.php im Ordner app/code/local/Mage/Catalog/Block/Product/View mit folgendem Inhalt:

<?php
class Mage_Catalog_Block_Product_View_Faq extends Mage_Core_Block_Template
{
protected $_product = null;

function getProduct()
{
if (!$this->_product) {
$this->_product = Mage::registry('product');
}
return $this->_product;
}
}

Dann erstellen wir noch ein passendes Attribut für unsere FAQ. Dazu gehen wir im Magento Backend in Katalog > Attribute > Attribute verwalten und legen dort ein neues Attribut an mit folgenden Einstellungen:

Attribut Code: faq
Geltungsbereich: (normalerweise) StoreView
Eingabe Typ: Mehrzeiliger Textbereich
Weitere Einstellungen nach Belieben
Sichtbar auf der Artikel-Seite im Front-end: Nein (sonst wird das Attribut bei Detailinformationen zusätzlich angezeigt)

So, abgesehen davon, dass natürlich dass Attribut nun bei den Produkten gepflegt werden muss, brauchen wir noch eine letzte Anpassung, um den neuen Tab zu zeigen. Hierfür wird die catalog.xml im Ordner app/design/frontend/[base oder default]/[IhrTemplate]/layout geöffnet und nach der Zeile

<block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml" >

gesucht. Unter dieser sind die schon angezeigten Tabs angegeben. Die Sortierung kann frei angepasst werden, wobei das erst genannte direkt geöffnet ist, wenn man auf die Seite kommt (s.a. diesen Beitrag).

Nun wird an der gewünschten Stelle folgende Zeile eingefügt:

<action method="addTab" translate="title" module="catalog"><alias>faq</alias><title>FAQ</title><block>catalog/product_view</block><template>catalog/product/view/faq.phtml</template></action>

Anschließend (spätestens nach Cache Reload) gibt es dann ein neues Tab mit den Werten des Attributs.

Soll ein Tab mit einem Statischen Block eingebaut werden, der für alle Produkte gleich ist, dann gibt es HIER die Anleitung.

Genutzt in Magento Version 1.5.1.0 Kommentare? Ergänzungen? Hinweise? Gerne!

Nachtrag für Magento 1.9 und das RWD-Theme

Bei Magento 1.9 auch in Verbindung mit dem RWD-Theme stellen sich ein paar Änderungen ein, die es zu beachten gilt.

  1. Die .phtml- und .php-Dateien werden genau wie oben beschrieben angelegt.
  2. Jedoch legen wir (wenn nicht bereits vorhanden) im verwendeten Theme eine local.xml an und fügen dort folgenden Code ein
    <?xml version="1.0"?>
    <layout>
     <catalog_product_view>
      <reference name="product.info">
          <block type="catalog/product_view_attributes" name="product.meintabname" as="meintabname" template="catalog/product/view/meineangelegte.phtml">
              <action method="addToParentGroup"><group>detailed_info</group></action>
              <action method="setTitle" translate="value"><value>Meintabname</value></action>
          </block>
        </reference>
    </catalog_product_view>
    </layout>
  3. Den Code, den oben in die catalog.xml eingegeben wird, brauchen wir nicht.
  4. Sollte der Tab nicht angezeigt werden, könnte es an einer fehlenden Block-Berechtigung liegen: Wer vergisst in Backend (ab Magento 1.9) unter System > Berechtigungen > Blocks eine Berechtigung für den aufzurufenden Block zu hinterlegen, wird den Block nur sehen, wenn er im Backend den Entwicklermodus anschaltet und sich die Pfadangaben (und ggfs. Blocknamen) anzeigen lässt. Ansonsten blockt Magento die Ausgabe einfach weg und man sucht sich einen Ast.
    Alternativ könnte man auch den Shop so angepasst haben, dass Tabs / Attributnamen nur angezeigt werden, wenn auch ein Wert hinterlegt ist. Somit auf jeden Fall sicherstellen, dass der jeweilige Tab bei betreffenden Produkt auch wirklich Inhalt hat.

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

2 comments on “Magento – Produktindividuellen Inhalt als Tab in Produktdetails hinzufügen”

  1. Super – danke. Mit ein paar kleinen Anpassungen (z.B. Rechte für CMS Blocks) klappt es auch unserem NewYorkCoffee.de Shop, wo wir im Tab nun unsere Finanzierungsangebote zeigen können.

    Danke – und weiter so 🙂

Leave a Reply to New York Coffee

Your email address will not be published. Required fields are marked *