12. Oktober 2009
Posted in
Joomla! -
Tools und Tipps
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.



Dienstag 27 Oktober, 2009
Registrierte - werden zu Registrierte... dann wird es auch nciht angezeigt.
Dienstag 27 Oktober, 2009
Das ist wohl war, nur mit dem oben erwähnten sollten auch Admins die Module nicht mehr angezeigt bekommen
Mittwoch 28 Oktober, 2009
Dienstag 3 November, 2009
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.
Mittwoch 25 November, 2009
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?
Mittwoch 25 November, 2009
"eckige Klammer auf" "Fragezeichen" php endif; "Fragezeichen" "eckige Klammer zu"
Mittwoch 30 Dezember, 2009
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!!
Samstag 9 Januar, 2010
Montag 25 Januar, 2010