Eine schnelle Lösung:
In app/[mypackage]/[mytheme]/template/catalog/product/view/attributes.phtml
(oder kopieren Sie diese Datei in Ihr Design aus dem Basis- oder benutzerdefinierten Standarddesign):
<?php foreach ($_additional as $_data):
// Add these 2 lines
$_test_data_value = trim($_data['value']);
if ((empty($_test_data_value) || in_array($_test_data_value, array(Mage::helper('catalog')->__('N/A'), Mage::helper('catalog')->__('No'))))) continue;?>
Das Folgende ist nicht notwendig, um das zu erreichen, was Sie gefragt haben:
Diese Attribute werden noch geladen. Um dies zu optimieren (wenn Sie eine große Anzahl von Attributen in Attributsätzen haben), gehen Sie wie folgt vor:
public function getAdditionalData(array $excludeAttr = array())
{
$data = array();
$product = $this->getProduct();
$attributes = $product->getAttributes();
foreach ($attributes as $attribute) {
// if ($attribute->getIsVisibleOnFront() && $attribute->getIsUserDefined() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {
if ($attribute->getIsVisibleOnFront() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {
// Fix:
//$value = $attribute->getFrontend()->getValue($product);
if (!$product->hasData($attribute->getAttributeCode())) {
$value = Mage::helper('catalog')->__('N/A');
}
// Fix:
elseif ((string) ($value = $attribute->getFrontend()->getValue($product)) == '') {
$value = Mage::helper('catalog')->__('No');
} elseif ($attribute->getFrontendInput() == 'price' && is_string($value)) {
$value = Mage::app()->getStore()->convertPrice($value, true);
}
if (is_string($value) && strlen($value)) {
$data[$attribute->getAttributeCode()] = array(
'label' => $attribute->getStoreLabel(),
'value' => $value,
'code' => $attribute->getAttributeCode()
);
}
}
}
return $data;
}
Beachten Sie die beiden // Fix:
Kommentare.
Diese geänderte Funktion ist von Mage_Catalog_Block_Product_View_Attributes
. Sie müssen die obige Funktion in Ihre Blockklasse aus Ihrem Modul kopieren. Ihre Blockklasse schreibt die Kernblockklasse neu. Wenn Sie dies anwenden, wird das Laden der Produktansichtsseite im Frontend erheblich verbessert.
Wenn Sie nicht wissen, wie Sie ein benutzerdefiniertes Modul in einem lokalen Verzeichnis erstellen, suchen Sie in einem Lernprogramm, wie Sie ein Magento-Modul erstellen und eine Kernblockklasse neu schreiben. Oder versuchen Sie es unter http://www.magentocommerce.com/magento-connect/ultimate-module-creator.html .