Magento – Produkte ohne Artikelbild nicht anzeigen / ausblenden

Bild

Neue Produkte sind eingetroffen und werden direkt im Magento Shop eingestellt. Die Einstellung der Fotos dauert aber leider noch etwas. Nun sollen diese Artikel auf den Produktseiten standardmäßig nicht angezeigt werden bis sie ein Bild haben.
Selbstverständlich gibt es die Möglichkeit beim Produkt selber einzustellen, dass es nicht sichtbar ist oder dass es deaktiviert ist etc..

Es geht aber auch einfacher und direkter.

In der für die Produktauswahl zuständigen Datei (z.B. New.php im Ordner app/code/local/Mage/Catalog/Block/Product)

folgendes ergänzen:

$collection ->addAttributeToFilter('small_image',array('notnull'=>'','neq'=>'no_selection'));

es kann aber auch in einer bestehenden $collection nur

->addAttributeToFilter('small_image',array('notnull'=>'','neq'=>'no_selection'))

hinzugefügt werden (darauf achten, dass der letzte Filter ein ; hinter der ) hat)

Die o.g. Version war notwendig, da die Selektierung nicht über ein Skript der PHTML durchgeführt wurde, sondern durch die PHP Datei.

Um eine allgemeine Selektion durchführen zu lassen, dass auch in einzelnen Kategorien keine Artikel ohne Bild angezeigt werden, kann die Zeile

->addAttributeToFilter('small_image',array('notnull'=>'','neq'=>'no_selection'))

in die list.phtml im Ordner app/design/frontend/[base oder default]/[IhrTemplate]/template/catalog/category ca. in Zeile 126 zu

$_productCollection->addCategoryFilter($category)
    ->setPageSize($length)
    ->setCurPage($currentPage)
    ->addAttributeToSelect('*');

so dass es nachher z.B. so aussieht:

    $_productCollection->addCategoryFilter($category)
    ->setPageSize($length)
    ->setCurPage($currentPage)
    ->addAttributeToFilter('small_image',array('notnull'=>'','neq'=>'no_selection'))
    ->addAttributeToSelect('*');

Somit werden alle Artikel nicht angezeigt, die kein Artikelbild hinterlegt haben. Sobald das Bild dann aber da ist, wird der Artikel auch angezeigt.

Bild

Ein weiterer hilfreicher Filter kam mir gerade noch unter die Augen: Nur Artikel anzeigen, die auch sichtbar sind (Visibility: Einzeln nicht sichtbar, Katalog, Suche, Katalog Suche). Eigentlich sollte dies ja selbstverständlich sein. Ich hatte aber gerade ein Template wo hierauf nicht geachtet wurde. Ich wollte also sicherstellen, dass nur Artikel angezeigt werden, die “Katalog Suche” als Merkmal hatten. Hierzu habe ich unterhalb der oben eingefügten Zeile noch

->addAttributeToFilter('visibility' , Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)

eingefügt. Möglich wäre auch z.B.

->addAttributeToFilter('visibility' , Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG)

für Artikel, die nur im Katalog sichtbar sind oder

->addAttributeToFilter('visibility' , Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE)

für Artikel, die einzeln nicht sichtbar sind.

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.

Leave a Reply

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