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!
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
Hi!
Geht das auch mit 1.7.0.2???
Bekomme das leider nicht hin!
Ich wäre für Hilfe sehr dankbar!
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’]) ?>
Danke für die Mitteilung, wie es auch bei Magento 1.7.0.2 geht!
Gibt es auch eine Möglichkeit den Reiter “Zusätzliche Informationen” komplett auszublenden wenn er leer ist?
Die gibt es sicherlich, hierzu habe ich aber aktuell keinen Code. Der müsste erst erarbeitet werden.