Magento – Kategorien und auch Unterkategorien in Frontend / PHTML einbinden

Bild

Es gibt verschiedene Gründe, weswegen eine Einbindung von Kategorien und Unterkategorien bzw. den Kategorielinks in die Frontpage sinnvoll ist. Sei es zum Beispiel die bessere und schnellere Bedienerfreundlichkeit oder Suchmaschinenoptimierung.

Man kann dies selbstverständlich manuell und Stück für Stück mit einer CMS Seite lösen, welche anschließend in die Seite eingebunden wird (wurde hier dargestellt).
Wer es aber komfortabel haben möchte und automatisch die aktuellen Kategorien etc. auf der Seite haben will, so dass auch Änderungen direkt übernommen werden und auch verschiedene Storeviews funktionieren, der kann mit dieser Lösung arbeiten, die ich unter http://fishpig.co.uk/display-categories-and-subcategories-in-magento/ gefunden habe.

Hier wird eine relativ einfache Möglichkeit genannt, wie entweder nur die Überkategorien, die Überkategorien und nur die Unterkategorien der aktuellen Überkategorie oder alle Kategorien und Unterkategorien angezeigt werden können.

Die folgenden Codes können direkt in PHTML Seiten eingepflegt werden. Ich habe hierzu z.B. die footer.phtml aus dem Verzeichnis app/design/frontend/[base oder default]/IhrTemplate/template/page/html verwendet. Dort nach dem letzten Eintrag.

Code um nur die Überkategorien anzuzeigen:

<?php
/*
* http://fishpig.co.uk – Magento Tutorials
*
* Display top level categories
*
**/
?>
<?php $_helper = Mage::helper(‘catalog/category’) ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href=”<?php echo $_helper->getCategoryUrl($_category) ?>”>
<?php echo $_category->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

Code um alle Über- und Unterkategorien anzeigen zu lassen:

<?php
/*
* http://fishpig.co.uk – Magento Tutorials
*
* Display top level categories and subcategories
*
**/
?>
<?php $_helper = Mage::helper(‘catalog/category’) ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry(‘current_category’) ?>
<?php if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href=”<?php echo $_helper->getCategoryUrl($_category) ?>”>
<?php echo $_category->getName() ?>
</a>
<?php $_category = Mage::getModel(‘catalog/category’)->load($_category->getId()) ?>
<?php $_subcategories = $_category->getChildrenCategories() ?>
<?php if (count($_subcategories) > 0): ?>
<ul>
<?php foreach($_subcategories as $_subcategory): ?>
<li>
<a href=”<?php echo $_helper->getCategoryUrl($_subcategory) ?>”>
<?php echo $_subcategory->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

Code um die Überkategorien und die jeweiligen Unterkategorien der aktiven Überkategorie anzeigen zu lassen:

<?php
/*
* http://fishpig.co.uk – Magento Tutorials
*
* Display top level categories and
* subcategories of the current category
*
**/
?>
<?php $_helper = Mage::helper(‘catalog/category’) ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry(‘current_category’) ?>
<?php if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href=”<?php echo $_helper->getCategoryUrl($_category) ?>”>
<?php echo $_category->getName() ?>
</a>
<?php if ($currentCategory && $currentCategory->getId() == $_category->getId()): ?>
<?php $_category = Mage::getModel(‘catalog/category’)->load($_category->getId()) ?>
<?php $_subcategories = $_category->getChildrenCategories() ?>
<?php if (count($_subcategories) > 0): ?>
<ul>
<?php foreach($_subcategories as $_subcategory): ?>
<li>
<a href=”<?php echo $_helper->getCategoryUrl($_subcategory) ?>”>
<?php echo $_subcategory->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

(Anmerkung: Ich habe den Bereich

<?php
/*
* http://fishpig.co.uk – Magento Tutorials
*
* Display top level categories and
* subcategories of the current category
*
**/
?>

bewusst in der Anleitung gelassen, um dem Autor Dank zu zollen. Der Bereich kann aber selbstverständlich auch entfernt werden.)

Möchte man nun noch den Bereich über eine CSS Klasse ein individuelles Design zuweisen, kann dies wie im folgenden Code einfach gemacht werden:

<div class=”beispiel”>
<?php
/*
* http://fishpig.co.uk – Magento Tutorials
*
* Display top level categories
*
**/
?>
<?php $_helper = Mage::helper(‘catalog/category’) ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href=”<?php echo $_helper->getCategoryUrl($_category) ?>”>
<?php echo $_category->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>

Nun muss natürlich noch ein ensprechender Eintrag in der relevanten CSS Datei gemacht werden. In unserem Beispiel war dies die styles.css im Ordner skin/frontend/[base oder default]/IhrTemplate/css . Hier haben wir dann

.beispiel { text-align: justify; }
.beispiel a { color:#666; text-decoration: none; }

eingefügt und anschließend hatten wir einen individuell gestalteten Bereich auf der Frontpage. Es kann natürlich auch mit li und ul gearbeitet werden, die oben genannt sind. Ich habe sie für meine Lösung entfernt.

Eine weitere Anleitung (wohl bei Magento 1.4.1.1) die ein wenig “besser” sein soll ist auch vom selben Autor hier zu finden.

Genutzt in Magento Versionen 1.4.1.1 und 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.

5 comments on “Magento – Kategorien und auch Unterkategorien in Frontend / PHTML einbinden”

  1. Hey, echt super Anleitung =) genau danach habe ich gesucht!!
    Allerdings habe ich leider noch ein Problem, wo ich nicht weiter komme … .

    Ich habe den Code von “Code um die Überkategorien und die jeweiligen Unterkategorien der aktiven Überkategorie anzeigen zu lassen:” genommen. Wenn ich nun aber auf eine Unterkategorie klicke, dann blendet er die Unterkategorien wieder aus und ich sehe nur noch die Oberkategorien in der Navigation :S .
    Was muss ich machen, damit auch die Unterkategorien noch angezeigt werden, wenn ich mich in einer Unterkategorie befinde? Gibt es da schon eine Lösung oder habe nur ich das Problem?

    1. Ich glaube, ich hatte das Problem auch. Daher habe mich entschieden immer alle Kategorien anzeigen zu lassen. Zu sehen z.B. unter http://www.bree-shop.com
      Laut Code gehe ich mal davon aus, dass er bei “Code um die Überkategorien und die jeweiligen Unterkategorien der aktiven Überkategorie anzeigen zu lassen:” wirklich nur die Unterkategorien der jeweiligen aktiven Überkategorie anzeigt. Wird also eine Unterkategorie angezeigt, würde er automatisch versuchen weiter “nach unten” zu gehen. Das geht aber eben nicht.

      1. Hey, danke für die schnelle Rückmeldung!
        Ja, das wäre wohl meine Notlösung … aber leider haben die Kategorien so viele Unterkategorien, dass es am Ende irgendwie echt scheiße aussehen würde …

        Ich hab mich nochmal auf die Suche gemacht und eine weitere Lösung gefunden, bei der die Unterkategorien auch angezeigt werden, wenn man sich auf einer befindet.
        Ich habe es eben eingebaut und es scheint zu funzen.

        Link zum Code:
        http://www.magentocommerce.com/wiki/4_-_themes_and_template_customization/catalog/getting_and_using_categories_and_subcategories

        Vielleicht hast du ja doch noch irgendwann mal gebrauch dafür 😉

Leave a Reply

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