Magento: Statische Blöcke in Produktdetails variabel anzeigen

attribute-cms-schalter-1Möchte man immer wiederkehrende Textpassagen bei bestimmten Produkten einblenden so ist dieses mit diesem Tutorial möglich. Man kann beliebig viele Textblöcke (CMS) anlegen und diese werden dann im Adminbereich dem Produkt mit JA/NEIN Schaltern zugeordnet.
Dieses bietet sich zum Beispiel für Garantietexte, Entsorgungshinweise (Batterien), besondere Versandhinweise oder sonstige immer wieder verwendete Textpassagen an. Variabel können jedem Produkt 1, 2 oder auch 10 Textblöcke hinzugefügt werden.

Die Step-by-Step Anleitung:

1. Anlegen der Attribute Schalter (JA/NEIN)
2. Anlegen der Textblöcke (CMS)
3. Die view.phtml modifizieren

1. Anlegen der Attribute Schalter

Admin -> Katalog -> Attribute -> Attribute verwalten
Mit Klick auf Neues Attribute (oben rechts) ein neues Attribute anlegen

attribute-cms-schalter-2Attributcode info01
Geltungsbereich Global (oder was immer Sie möchten)
Katalog Eingabetyp für Shopbesitzer Ja/Nein
die folgenden Felder nicht ändern.

im linken Menu auf
Bezeichnungen/Optionen verwalten klicken und bei Admin Info 01 eingeben.

Nun das Attribute speichern.

Wiederholen Sie Schritt 1 wenn Sie mehr als einen Textblock anlegen wollen.
Legen Sie so viel Attribute an (info02, info03, … ) soviel CMS Textblöcke Sie haben möchten.

1b. Die Attribute bekommen nun ein Zuhause.
Jedes Produkt hat ein Attributset (Standard = Default).

Admin -> Katalog -> Attribute -> Attributesets verwalten

Wählen Sie nun erst einmal das Default Attributset aus.

Auf der rechten Seite sehen Sie die noch nicht zugeordneten Attribute. Unter anderen auch unsere eben angelegten info01, …
Diese müssen nun zugeordnet werden. Dies geht ganz einfach so:
Klicken Sie auf info01 und halten die linke Maustaste gedrückt. Ziehen Sie nun das Attribute mit gedrückter Maustaste in das mittlere Fenster.

z.b. in die Gruppe General unter das letzte Attribute (hier im Beispiel delivery_time).
Lassen Sie die Maustaste los und das Attribute ist platziert. Wenn es nicht funktioniert, einfach noch mal versuchen – Übung macht den Meister.

attribute-cms-schalter-3

Haben Sie noch mehr Attribute angelegt (info02, …) ziehen Sie alle betreffenden Attribute der Reihe nach unter info01.

Attributset speichern.

Möchten Sie die Schalter in weiteren Attributsets haben wiederholen Sie die Schritte für alle gewünschten Attributsets.

2. Die Textblöcke anlegen (CMS)

Admin -> CMS -> Statische Blöcke

Oben rechts auf Neuen Block anlegen klicken.

attribute-cms-schalter-4

Blocktitel infoblock 01
Seitenbezeichner infoblock01 (wichtig, kein Leerzeichen!)
StoreView Alle StoreViews (oder was immer Sie möchten)
Status Aktiviert
Inhalt <p>Ihr Text, kann mit Html-Tags formatiert werden</p>

Block speichern

Legen Sie bei Bedarf weitere Blöcke an mit den Seitenbezeichner infoblock02, infoblock03 , …
Für jeden Textblock muss auch ein Attribute (Schalter) angelegt sein (siehe Schritt 1).

Der letzte Schritt.

3. Die view.phtml modifizieren

Die view.phtml ist zuständig für die Produktdetailausgabe. Hier werden wir auch die Textblöcke anzeigen lassen.

Die view.phtml finden Sie unter
app/design/IhrInterface/IhrTheme/ templates/catalog/product/view.phtml

Durch einfügen dieser Codezeile erfolgt die Anzeige wenn der Schalter bei dem entsprechenden Produkt auf JA steht.

<?php if ($_product->Info01 ==1) { echo $this->getLayout()->createBlock('cms/block')->setBlockId('infoblock01')->toHtml() ;}?> 

Steht der Schalter auf JA wird infoblock01 angezeigt.

Kopieren Sie die Codezeile in die view.phtml an die Stelle wo die Ausgabe erfolgen soll.

<?php if ($_product->Info01 ==1) { echo $this->getLayout()->createBlock('cms/block')->setBlockId('infoblock01')->toHtml() ;}?>
<?php if ($_product->Info02 ==1) { echo $this->getLayout()->createBlock('cms/block')->setBlockId('infoblock02')->toHtml() ;}?>

Zum Beispiel nach der Produktbeschreibung:

...
<?php if ($_description = $this->getChildHtml('description')):?>
<div class="collateral-box">
<div class="head">
<h4><?php echo $this->__('Product Description') ?></h4>
</div>
<?php echo $_description ?>
</div>
<?php endif;?>

<?php if ($_product->Info01 ==1) { echo $this->getLayout()->createBlock('cms/block')->setBlockId('infoblock01')->toHtml() ;}?>
<?php if ($_product->Info02 ==1) { echo $this->getLayout()->createBlock('cms/block')->setBlockId('infoblock02')->toHtml() ;}?>

<?php if ($_additional = $this->getChildHtml('additional')):?>
<div class="collateral-box">
...

Haben Sie mehrere Textblöcke kopieren Sie die Zeilen untereinander und ändern jeweils den Seitenbezeichner (infoblock02, infoblock03, …).

Speichern Sie die view.phtml und leeren alle Caches (System -> Cache Verwaltung).

So, das war es auch schon.
Nun kann in der Produktverwaltung für jedes Produkt die gewünschten Textblöcke eingeschaltet werden. Standardmäßig sind diese auf NEIN gesetzt.

attribute-cms-schalter

Viel Spaß damit

Stefan Pröhl / robin2160
mageintern.de

7 Gedanken zu „Magento: Statische Blöcke in Produktdetails variabel anzeigen

  1. Sebastian Mehrt

    Ist zwar schon ein Weilchen her hier der Post, aber vielleicht kann mir jemand helfen.
    Ich habe alles nach der tollen Anleitung gemacht. Doch leider wird mein erstellter Block nicht angezeigt. Mein Code lautet:
    info ==1) { echo $this->getLayout()->createBlock(‘cms/block’)->setBlockId(‘Info1′)->toHTML(); } ?>

    Steht auch auf ja in der Artikelerstellung.

    Wenn ich nur den Block ausgelsen haben möchte funktioniert es.
    getLayout()->createBlock(‘cms/block’)->setBlockId(‘Info1′)->toHTML();?>

    Liegt es vielleicht an 1.5.1?
    Wäre schön wenn mir jemand helfen könnte.

    Mit freundlichen Grüßen Basti

    [Antwort]

    jury2001 Antwort vom März 7th, 2013 10:30:

    Hi,
    wenn du alles, wie oben beschrieben, gemacht hast, dann müsste der Parameter von setBlockId(‘info01′) sein, kleines i.
    Gruß
    Jury

    [Antwort]

  2. fatsche

    Hallo Stefan,

    vielen Dank für diese wirklich Anfängerfreundliche Anleitung -funzt problemlos!! Hervorragende Ergänzung und sehr, sehr hilfreich, erspart viel Arbeit!

    Bitte weiter so!!! ;)

    LG
    Fatsche

    [Antwort]

  3. Nessa

    Ich hätte eine Frage und hoffe das du mir vielleicht weiter helfen kannst…

    Kann ich den Blocktitel auch irgendwie auslesen?

    Normalerweise würd ich den Titel einfach in den Inhalt kopieren, aber in diesem speziellen Fall ist dies nicht möglich.

    Danke

    [Antwort]

  4. Daniel Sasse

    Das kann man wirklich sehr oft für diverse Szenarien gebrauchen. Das Thema wurde sehr anschaulich vermittelt & alles klappt hervorragend. Vielen Dank!!!

    [Antwort]

    mageintern - robin2160

    mageintern - robin2160 Antwort vom Oktober 21st, 2009 02:21:

    Freut mich sehr!

    [Antwort]

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>