Ausblenden von leeren Attributen

In der Artikel Detailansicht ist es immer unschön, wenn leere Attribute mit „Nein“ oder „Nicht angegeben“ angezeigt werden.

Dies lässt sich aber ganz einfach unterbinden:

Öffnen der Datei (wenn nicht vorhanden, aus dem „base“ Verzeichnis in das eigene Template Verzeichnis kopieren)

/app/design/frontend/default/<Eigenes Template>/template/catalog/product/view/attribute.phtml

Hier dann folgenden Code suchen:

<?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; ?>

und durch folgenden Code ersetzen:

<?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; ?>

Share

Tab Problem bei Internet Explorer 9

Eines der nervigsten Sachen in der Webentwicklung ist immer noch die Cross-Browser Problematik.

Hier mal wieder ein passendes Beispiel:

In Magento gibt es in der Produkt Detailansicht bei einigen Themes die Tabs (Artikelbeschreibung, Zusatzinformationen und Schlagworte im Standard). Im IE9 funktioniert die Umschaltung jedoch nicht – im FF und Chrome geht es problemlos.

Das Problem ist eigentlich ganz einfach zu beheben:

Als erstes öffnen wir die Datei „<dein template>/catalog/product/view/tabs.phtml“ und suchen folgenden Code:

showContent: function(a) {
var li = $(a.parentNode), ul = $(li.parentNode);
ul.select(‚li‘, ‚ol‘).each(function(el){
var contents = $(el.id+’_contents‘);
if (el==li) {
el.addClassName(‚active‘);
contents.show();
} else {
el.removeClassName(‚active‘);
contents.hide();
}
});
}

und ersetzen diesen durch:

showContent: function(a) {
var li = $(a.parentNode), ul = $(li.parentNode);
ul.select(‚li‘).each(function(el){
var contents = $(el.id+’_contents‘);
if (el==li) {
el.addClassName(‚active‘);
contents.show();
} else {
el.removeClassName(‚active‘);
contents.hide();
}
});
}

So einfach kann es sein, wenn man weiß, woran es liegt 🙂

Dann am besten noch im Magento Backend den Cache löschen/aktualisieren.

Share