Magento – Attribute ausblenden, die “Nicht verfügbar” sind

Magento verfügt über die Möglichkeit für Artikel x-beliebig viele Attribute einzurichten und zu pflegen. Nun ist das eine Attribut (aus demselben Attributset) jedoch für einen Artikel interessant und für den anderen nicht. Daraus folgt also, dass es Attribute gibt, die bei einem Artikel gefüllt sind und beim anderen nicht. Die Aussage “Nicht verfügbar” ist für einen Kunden aber nicht wirklich zielführend, sondern eher verwirrend.

Somit muss eine Lösung her, um Attribute ohne Wert bzw. “Nicht verfügbar” auszublenden. Ein Code nach dem Motto “Wenn Nicht verfügbar, dann nichts anzeigen. Wenn verfügbar, dann anzeigen”.

Dieser Code muss dann in die attributes.phtml im Ordner app/design/frontend/[base oder default]/[IhrTemplate]/template/catalog/product/view.

Und zwar wird folgender Code ersetzt:

<?php foreach ($_additional as $_data): ?>
<tr>
<th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
<td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>

ca. in Zeile 43. Anstelle dieser Codezeilen wird dann folgender Schnipsel verwendet:

<?php foreach ($_additional as $_data): ?>
<?php $_attribute = $_product->getResource()->getAttribute($_data['code']);
if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != '')) { ?>
<tr>
<th class="label">
<?php echo $this->htmlEscape($this->__($_data['label'])) ?>
</th>
<td class="data">
<?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?>
</td>
</tr>
<?php } ?>
<?php endforeach; ?>

Mit diesem Code wird dann genau das erreicht: Wenn Attribut “Nicht verfügbar” dann komplett ausblenden.

Genutzt in Magento Version 1.5.1.0 Kommentare? Ergänzungen? Hinweise? 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.

6 comments on “Magento – Attribute ausblenden, die “Nicht verfügbar” sind”

  1. Hallo Commercers,

    ich würde gerne wissen wie man Attribute verlinkt. In der additionaldata-Tabelle kann man ja z.B. “blau” beim Attribut “Farbe” ausgeben lassen. Nun würde ich aber den Wert “blau” verlinken sodaß man auf Klick alle blauen Artikel angezeigt kriegt. Ich denke mal, dass es funktioniert wenn man in der attributes.phtml die Attribut-Ausgabe in einen link einbettet, z.B. beim Attribut Farbe mit “/catalogsearch/advanced/result/?color%5B%5D=154” wo bei in diesem Beispiel 154 die ID für “blau” ist.

    Könnt ihr mir helfen?

    Herzliche Grüße,
    Marcus

  2. Hi!
    Geht das auch mit 1.7.0.2???
    Bekomme das leider nicht hin!

    Ich wäre für Hilfe sehr dankbar!

  3. Das ist der richtige Code für Magento 1.7.0.2:

    getResource()->getAttribute($_data[‘code’]);
    if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != ”)) { ?>

    htmlEscape($this->__($_data[‘label’])) ?>
    productAttribute($_product, $_data[‘value’], $_data[‘code’]) ?>

Leave a Reply

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