Magento – Bestimmte Teile des Shops ausblenden für nicht registrierte Nutzer

Die Frage, wie man Preise für nicht registrierte und nicht eingeloggte bzw. angemeldete Besucher des Shops ausblendet ist schon ziemlich alt, jedoch hat sie nichts an Aktualität verloren.

Es gibt immer wieder die Aufgabe bestimmte Bereiche auszublenden, wenn der Nutzer nicht eingeloggt ist.

BildUm z.B. Artikel und Kategorien für nicht eingeloggte Benutzer auszublenden, gibt es großartige und auch kostenlose Extensions wie z.B. vom Netzarbeiter Vinai Kopp, der schon verschiedene empfehlenswerte Extensions auf den Magento Markt gebracht hat. Eine die es hier zu nennen gibt, ist die Extension

Login only catalog

die es kostenlos im MagentoConnect gibt (oder auch auf GitHub). Hier kann komfortabel eingestellt werden, ob neben den Artikeln (in den Kategorien) auch die komplette Kategorie Navigation versteckt werden soll solange der Nutzer nicht eingeloggt ist. Des Weiteren können bestimmte Teile auch ausgeschlossen werden, die dann trotz nicht eingeloggt seins angezeigt werden.

Für alle Standardfunktionen funktioniert dies auch traumhaft. Eine schöne Möglichkeit, die diese Extension bietet, ist dass man auch die “Home” Seite von der Extension verstecken lassen kann, wenn man auch nur ein Produkt wie z.B. mit einem “Neue Produkte” Widget auf dieser einblendet. Die Extension sieht also, dass Produkte auf der Seite sind und sperrt die Seite automatisch, so dass man sich erst anmelden muss, um sie zu sehen.

Wie eben gesagt, funktioniert die Extension toll wenn es sich um Standardfunktionen von Magento handelt.

Hat man aber z.B. ein Megamenü welches mit dem Theme kommt, wird dieses nicht von der Extension versteckt, so dass es für jeden sichtbar ist. Die Kategorien und Artikel kann man sich zwar immernoch nicht anschauen aber eine Übersicht über die Kategorien hat man dennoch.

Um dies also zu verhindern, hilft ein kleines bisschen Code, welches UM den auszuschließenden Bereich gelegt wird.

Und zwar sind dies die Zeilen

<?php if(Mage::getSingleton('customer/session')->isLoggedIn()): ?>

und

<?php endif; ?>

Wenn also z.B. ein Megamenu den Code

   <?php echo $this->getLayout()->createBlock("tabs/navigation")->setTemplate("ip_tabs/navigation.phtml")->toHtml(); ?>

hat, dann sieht alles zusammen so aus:

<?php if(Mage::getSingleton('customer/session')->isLoggedIn()): ?>
   <?php echo $this->getLayout()->createBlock("tabs/navigation")->setTemplate("ip_tabs/navigation.phtml")->toHtml(); ?>
<?php endif; ?>

Anschließend wird das Megamenue nicht angezeigt, wenn der Nutzer nicht eingeloggt ist.

Diesen Code kann man natürlich auch um so ziemlich alle anderen Elemente des Shops legen.

Genutzt in Magento Version 1.7. Fragen, Kommentare, Vorschläge? Gerne direkt oder als Kommentar.

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.

2 comments on “Magento – Bestimmte Teile des Shops ausblenden für nicht registrierte Nutzer”

  1. Hallo ,
    ich habe die tolle Extensions Login only catalog instaliert. Leider funktioniert sie nicht bei meinem Theme. Ich habe nachgelesen, das man folgende Zeile hinzufügen muss..
    getLayout()->createBlock(“tabs/navigation”)->setTemplate(“ip_tabs/navigation.phtml”)->toHtml(); ?>..
    Nur weiß ich nicht, wo man diese Zeile hinzufügt..
    Über einen Tip wäre ich Dir sehr dankbar.. Gruß Hansjörg

Leave a Reply

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