3 Dinge die man mit Kategorien tun kann

Ein paar Code-Schnippsel von Dingen die man im Umgang mit Mage::getModel('catalog/category') gebrauchen kann :)

1. Die Eltern-Kategorie aufrufen

$_category = Mage::getModel('catalog/category')->load( 1234 );
$_parentcategory = $_category->getParentCategory();

Nützlich um z.B. den Farbcode der Parent-Kategorie zu übernehmen.

2.  Das Level der Kategorie ermitteln

Das Level einer Kategorie gibt an wie tief die Kategorie verschachtelt ist oder anders wie viele Oberkategorien sie einschließlich sich selbst hat.

  • Hauptkategorie/ Root-Kategorie (Level = 1)
    • Bekleidung ( Level = 2 )
      • Socken ( Level = 3)
      • Hosen ( Level = 3)
$_level = $_category->getLevel();
var_dump($_level);
Nützlich um z.B. die dritte Ebene anders darzustellen.

3. Für alle Kategorien Level 1 isAnchor aktivieren

Wenn die Layered-Navigation benutzt werden soll muss bei den Kategorien im jeweiligen Level aktiviert werden das sie als Anker dienen. Das bedeutet soviel wie das, unabhängig vom Filter, die Kategorie aktiv bleibt. Bei vielen vielen Unterkategorien kostet das manuelle Bearbeiten viel zu viel Zeit deswegen geht es mit folgendem Code-Schnipsel deutlich schneller:
// Alle Kategorien abrufen + durchlaufen
$categories = Mage::getModel("catalog/category")->getCollection();

foreach( $categories AS $cat ) {
	$cat = Mage::getModel("catalog/category")->load( $cat->getId() );
	if ( $cat->getLevel() == 1 ) {
		// Nur für Level 1
		$cat->setData('is_anchor', 1);

		// Nur verändertes Attribute speichern (geht deutlich schneller)
		$cat->getResource()->saveAttribute($cat, 'is_anchor' );
	}
}


Ein Beitrag von Tobias Vogt
Tobias's avatar

Tobias Vogt arbeitet seit 2008 mit Magento und ist seit 2011 durch Magento zertifizierter Entwickler. Seit 2016 ist er Mitgründer und CTO bei der connect-io GmbH, einer Magento-Agentur mit Sitz im idyllischen Paderborn-Salzkotten. Er gehört zum Gründer-Team der Webguys und ist seit November 2011 Bachelor of Science (Wirtschaftsinformatik). Sie erreichen Ihn per E-Mail unter tobi@webguys.de.

Alle Beiträge von Tobias

Dein Kommentar