12 Bewertungen

Quelle: The Art of Joomla (in englisch)
Übersetzung: Joomla! Schweiz (wobei wir die Übersetzung teilweise etwas ergänzt haben)


Joomla ist ziemlich gut wenn es darum geht, Dinge vor der Öffentlichkeit zu verstecken und erst dann anzuzeigen, sobald sich der Benutzer angemeldet hat. Aber was passiert, wenn ein Modul versteckt sein soll, sobald der Benutzer eingeloggt ist? Dafür bietet Joomla keine Option an.

Dieses Problem taucht sehr oft auf, wenn man eine neue Webseite erstellt. Leider kann man das nicht in den Moduleinstellungen von Joomla verändern. Dafür benötigen wir ein paar Zeilen Code. Für das Modul, welches dann im angemeldeten Zustand versteckt sein soll, müssen wir eine seperate Modulposition im aktiven Template erstellen.

Um eine Modulposition zu verstecken, sobald ein Benutzer angemeldet ist, müssen wir nur herausfinden ob der Benutzer nun angemeldet ist oder nicht. Anhand der Joomla API (das ist nur eine Bezeichnung für etwas Code, der von Joomla benutzt wird) können wir dies leicht herausfinden. Alles was wir tun müssen, ist, herausfinden ob die User ID nicht Null ist. - Dann wissen wir ob der Benutzer angemeldet ist oder nicht. Schauen wir uns einmal an, wie das funktioniert:

Öffne die Hauptdatei des Templates, welches gerade als Standard definiert ist. Es sollte etwa so aussehen:

 /templates/ja_purity/index.php

Dies können Sie zum Beispiel im Administrationsbackend von Joomla! unter Erweiterungen - Templates - Template dann Auswählen - Bearbeiten - HTML Bearbeiten tun. Oder Sie benutzen einen HTML-Editor.

Jetzt müssen Sie die Modulposition finden, in welcher Sie später das entsprechende Modul anzeigen möchten. Navigieren in der Datei index.php zu dem Code, welcher ähnlich wie folgender aussieht:

 <jdoc:include type="modules" name="user4" style="xhtml" />

Suchen Sie die Modulposition, die Sie verstecken möchten und fügen Sie darunter folgenden Code ein:

// Get the user object
$user = &JFactory::getUser();
// Now work out the User ID
$userId = $user->get('id');
// Now hide the module if user is logged in
if ($userId == 0) :
// Now we break out of the PHP tags and display the JDOC tag to include the module
?>
<jdoc:include type="modules" name="public-right" style="xhtml" />
<?php endif; ?>

Sie sollten vermutlich eine neue Modulposition erstellen. Hier heisst die Modulposition "public-right", damit es klar ist, dass es in der rechten Spalte und nur öffentlich erscheint. Wenn Sie sich später einloggen, sollten keine Module der Modulposition "public-right" angezeigt werden.

Das ist eine sehr einfache Technik, aber sie kann einen grossen Effekt auf das Gesamtgefühl der Webseite haben.

9 Kommentare

Comments_Feed
  1. Ich verwende dazu in den Modul eigenschaften die Option "Special".

    Registrierte - werden zu Registrierte... dann wird es auch nciht angezeigt.
  2. Hi Adi,

    Das ist wohl war, nur mit dem oben erwähnten sollten auch Admins die Module nicht mehr angezeigt bekommen ;) was ja mit "Sepzial" nicht der fall ist...
  3. Danke für diesen guten Beitrag. Der Code wurde gerade zu meinen Coda-Clips hinzugefügt, hehe.
  4. @Adi
    so wie ich den Code (und Text) verstehe, geht es darum dass ein Modul nach dem Anmelden in Frontend nicht mehr angezeigt wird.
    Mit Spezial ist das Modul nicht angemeldeten verborgen, wie auch den Registrieren.
  5. Ich bekomme nach dem Einfügen folgende Fehlermeldung:
    Parse error: syntax error, unexpected T_ENDIF in /www/htdocs/w00b0bd7/cms/templates/yoo_sunblogger/index.php on line 247

    Auf Line 247 steht .

    Was ist da falsch?
  6. ... die Line-Zeile wurde im vorherigen Beitrag nicht angezeigt:

    "eckige Klammer auf" "Fragezeichen" php endif; "Fragezeichen" "eckige Klammer zu"
  7. vielen Dank für dieses wunderbare Tutorial.
    Ich habe es dazu verwendet, um den Inhalt einer Datenbank, der mit der Komponente "Chrono Connectivity" angezeigt wird, nur für registrierte Benutzer zugänglich zu machen.
    Es hat wunderbar funktioniert!!
  8. Kurz frage ich habe den selben Fehler Parse error wie Floh kann uns da jemand helfen?
  9. Mit Frontend User Access funktioniert dies prächtig

Kommentar schreiben