Manchmal ist es durchaus sinnvoll, spezielle Information für nicht angemeldete Benutzer bereitzustellen, mit denen man angemeldete - und damit bereits registrierte - User nicht mehr "belästigen" möchte.
Leider lässt sich das in Joomla nicht direkt lösen, deshalb hier ein kleines HowTo, bei dem die index.php des eingesetzten Templates eine Hauptrolle spielt.
Kern der Lösung ist die Anzeige eines Moduls, das nur sichtbar ist, solange der User sich nicht angemeldet hat. Dabei sind zwei Dinge wichtig:
1. Die Einbettung in die Template-Struktur, in diesem Fall müssen wir uns in die Tabelle mit reindrängeln.
2. Das soll aber nur geschehen, wenn der User nicht angemeldet ist.
Um den Anmeldestatus abzufragen, stellt Joomla die Variable $my->id zur Verfügung. Ist diese gesetzt, ist der User angemeldet. Also muss ich dafür sorgen, dass die zuätzlichen Zeilen nur dann angezeigt werden, wenn die Variable nicht gesetzt ist:
Das Ausrufezeichen vor der Variable sorgt dafür, dass die Bedingung erfüllt ist, wenn die Variable nicht gesetzt - also quasi leer - ist.PHP-Code:if !$my->id {
mache dies und das
}
An welcher Stelle das neue Modul erscheinen soll, liegt natürlich im Ermessen des Admins, das folgende Beispiel verwendet das Template "Solarflare" und setzt das Modul unmittelbar über den Haupttext.
Natürlich empfehle ich dringend, zunächst eine Sicherheitskopie von der index.php zu machen!
Die Einfüge-Stelle befindet sich bei "Solarflare"standardmäßig in der Gegend um Zeile 160:
Die index.php ist damit fertig, jetzt muss nur noch das Modul dafür geschaffen werden. Das geschieht im Backend unter "Modules -> Site Modules". Dort mit "New" ein neues Modul erstellen. Die Details (Modulname etc.) können nach eigenem Ermessen ausgefüllt werden, allerdings wäre es unsinnig bei "Access Level" etwas anderes als "Public" einzustellen. Bei "Position" wird die Bezeichnung übernommen, die dem Modul in der index.php gegeben wurde, in unserem Beispiel ist das "user9"PHP-Code:<tr>
<td colspan="<?php echo $colspan; ?>">
<div id="pathway_text">
<?php mosPathWay(); ?>
</div>
</td>
</tr>
<? // Beginn der Modifikation "Info für NICHT angemeldete User"
if ( !$my->id ) { //WENN NICHT angemeldet, dann...
?>
<tr>
<td colspan="<?php echo $colspan; ?>" class="body_outer">
<?php mosLoadModules ( 'user9', -3); ?>
</td>
</tr>
<?
} //Ende der Modifikation "Info für NICHT angemeldete User"
?>
<tr>
<td colspan="<?php echo $colspan; ?>" class="body_outer">
<?php mosMainBody(); ?>
</td>
</tr>
</table>
Der Abschnitt "Parameters" kann komplett ignoriert werden, im Feld "Content" des Abschnitts "Custom Output" kommt dann der Text, den wir den Usern anzeigen wollen, solange sie nicht angemeldet sind.
Jetzt noch speichern und veröffentlichen und die Sache ist erledigt.
---
Ich hoffe, die Erklärung ist verständlich und nicht zu sehr fehlerbehaftet. Natürlich wäre ich über ein Feedback sehr dankbar. Wenn das also jemand ausprobiert, kann er seine Erfahrungen ja hier mal mit uns teilen. Auch über Verbesserungsvorschläge würde ich mich sehr freuen. Allerdings möchte ich darum bitten, mich nicht zu fragen, wie das bei anderen Templates genau geht, bei mehr als tausend Vorlagen in der Template-Galerie könnte das schnell zur Lebensaufgabe werden.
Danke


LinkBack URL
About LinkBacks
Zitieren
Lesezeichen