Magento – Attribute in Artikelbeschreibung / Artikel Details anzeigen

Man kann beliebige Attribute an beliebiger Stelle in der Artikelansicht des Shops anzeigen lassen. Was braucht man dafür?

1. Den Namen / Code des anzuzeigenden Attributes

2. Die Datei, die die Anzeige übernehmen soll

3. Ein Stückchen Code

 

Zu 1. legt man entweder das Attribut neu an oder schaut in die Attribute im Backend ( Katalog > Attribute > Attribute verwalten). Dort merkt man sich den “Attribut Code”. Ich möchte die Lieferzeit anzeigen lassen (MRG übernimmt dies ja, da MRG für Magento 1.6 aber noch nicht geht….) daher merke ich mir “delivery_time“.

Zu 2. Die Datei, die die Anzeige übernimmt kann vielfältig sein: z.B. app/design/frontend/[base oder default]/[IhrTemplate]/template/catalog/product/view.phtml oder auch wenige Ordner tiefer (view/type) die default.phtml. Diese Datei verwende ich, da ich die Lieferzeit unter der schon eingeblendeten Verfügbarkeit eingeblendet haben möchte. Andere Dateien können sehr einfach z.B. über System > Konfiguration > Entwickleroptionen > Debug > Vorlagen Pfadhinweise herausgefunden werden.

Zu 3. Das Stückchen Code lautet (für Freitext Attribute)

<?php echo $this->__('Anzuzeigender Name') ?> <?php echo $_product->getHIER denAttributCode() ?>

bei mir wäre dies dann

<?php echo $this->__('Delivery Time:') ?> <?php echo $_product->getdelivery_time() ?>

Für Dropdown Attribute muss <?php echo $_product->getdelivery_time() ?> durch

<?php echo $_product->getAttributeText('AttributCode') ?>

ersetzt werden.

Für “Ja” / “Nein” Attribute durch dies ersetzen:

<?php echo $_product->getAttributCode() ? "Yes" : "No" ?>

Den Code an der richtigen Stelle in der Datei einbauen.

Wenn alle drei Schritte befolgt werden, kann spätestens nach eine Cache Reload das Ergebis bewundert werden.

Bild

Schwieriger wird es bei Mehrfachauswahl Attributen. Mit dem o.g. Code werden leider nur die Attribut Wert IDs ausgegeben und nicht die Bezeichnungen. Daher muss hier ein deutlich umständlicherer Code verwendet werden.

In der o.g. Datei werden an beliebiger Stelle folgende Zeilen hinzugefügt:

<?php echo $this->__('Hier Ihr Text VOR den Attributen') ?>
<?php
$multiSelectArray = $this->getProduct()->getAttributeText('ATTRIBUTCODE');
$lastItem = end($multiSelectArray);

foreach($multiSelectArray as $multiSelectItem){
echo $multiSelectItem;
if($multiSelectItem != $lastItem) echo ", ";
}
?>

Wie immer auf die korrekte Übernahme der Anführungszeichen etc. achten (beim Kopieren).

Genutzt in Magento Versionen 1.5.1.0 und 1.6.1.0. Fragen? Kommentare? Anregungen? Gerne!

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.

13 comments on “Magento – Attribute in Artikelbeschreibung / Artikel Details anzeigen”

  1. Danke für den Blogpost! Sehr schön erklärt. Ich wollte nur kurz ergänzen, dass die getter- (und setter-) Methoden in Camel-Case geschrieben werden müssten, um den Magento Coding-Guidelines zu entsprechen. Aus getdelivery_time() müsste getDeliveryTime() werden. Die Unterstriche werden entfernt, und der jeweils folgende Buchstabe wird in groß geschrieben.
    Alternativ, wenn einem diese Umformung nicht gefällt, könnte auch getData(‘delivery_time’) genutzt werden.

    1. Hallo, was meinen Sie mit “List View”? Die Kategorie Ansicht (Artikel unter einander wenn man eine Kategorie öffnet)?

  2. Kann man den Code auch in die list.phtml eintragen? Würde gerne Attribute in der produkt übersicht bzw. in der kategorie übersicht anzeigen lassen nicht nur in den einzelnen produkte?!

          1. Hi und danke für die Anleitung. Klappt super!

            Was muss man denn machen wenn man zwei Sprachen hat?

            Ich möchte z.B. in Deutsch das Attribut “Spieldauer” anzeigen. Im Englischen soll das aber “Playlength” heissen.

            Wäre super wenn es hierfür auch eine Lösung gibt…

    1. Leider nicht. Im Backend ist alles richtig eingestellt und übersetzt. Das liegt wohl eher daran das mit
      __(‘Anzuzeigender Name’) ?> getHIER denAttributCode() ?>

      Der Name ja Bereits “festgelegt” wird. Aber wie mache ich das anders so das “Azuzeigender Name” eben auf den jeweiligen aktiven Storeview geholt wird?

  3. Vielen Dank für diese Anleitung.

    Für ein DropDown-Attribut (delivery_time) habe ich folgenden Code in die view.phtml eingefügt: __(‘Lieferzeit:’) ?>getAttributeText(‘delivery_time’) ?>

    Leider bekomme ich aber einen Fehler auf der Produktseite:

    Lieferzeit: Fatal error: Call to a member function getSource() on a non-object in /home/deelite/www/batterien-dinkels/app/code/core/Mage/Catalog/Model/Product.php on line 1389

    Ich nutze Magento 1.7

    Kann mir da vielleicht jemand helfen?

Leave a Reply

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