Inhalte nur für registrierte User

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

An sich ist das sehr einfach individuell zu machen, gewisse PHP Kenntnisse würden da nicht schaden, vermutlich geht es auch ohne, ich spiele es mal am Beispiel des IMG Tags durch (du solltest es danach auch auf die anderen Tags übertragen können die du ersetzen willst).

Öffne die bbcode.php zu finden im includes Ordner.

Hier gibt es eine Funktion mit dem Namen "bbencode_second_pass($text, $uid)". Diese Funktion ist dafür verantwortlich, dass die bbCodes so angezeigt werden, wie das vom Forum aus vorgesehen ist.
In dieser Funktion findet sich für den IMG Tag dieser Code:

Code: Alles auswählen

// [img]image_url_here[/img] code..
	// This one gets first-passed..
	$patterns[] = "#\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\]#i";
	$replacements[] = $bbcode_tpl['img'];
Da müssen wir nun ran. Erst einmal sollten wir den Loginstatus des Users prüfen um zu wissen was wir zeigen dürfen und was nicht. Hierzu wird das hier

Code: Alles auswählen

global $userdata;
//Eingeloggt?
if($userdata['session_logged_in'] && $userdata['user_id'] != ANONYMOUS)
{
$eingeloggt = true;
}
else
{
$eingeloggt = false;
}
direkt unter den Funktionsnamen (nach der Geschweiften Klammer) eingefügt. Das sollte Prüfen ob wir eingeloggt sind und zur Sicherheit auch noch, ob wir nicht vielleicht der Anonyme User (id = -1) sind.
Nun können wir uns an den IMG Code wagen. Im Prinzip machen wir hier nichts anderes als eine Fallunterscheidung. Wenn der User eingeloggt ist, dann benutzen wir den Code so wie er ist, ansonsten führen wir etwas anderes durch. Damit andere Tags nicht beeinflusst werden werden wir die Verzweigung nur beim IMG Tag einbauen.

Fragen wir also durch einfügen von

Code: Alles auswählen

if($eingeloggt)
{
vor dem IMG Code und von nach dem IMG Code ab, ob der User eingeloggt ist und führen den Code nur dann aus, wenn dem so ist. Damit aber nun der Code nicht komplett unverändert dargestellt wird (und damit die bbcode_uid in den IMG Tags die weiterhin sichtbar wären) müssen wir den Kram noch anders elegant ersetzen wenn der User nicht eingeloggt ist. Das erledigt dieser Code:

Code: Alles auswählen

else
{
// [img]image_url_here[/img] code..
	//Replacement for not logged in Users
	$patterns[] =. "#\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\]#i";
	$replacements[] = $bbcode_tpl['b_open'].' Um dieses Bild sehen zu können musst du dich einloggen '.$bbcode_tpl['b_close'];
}
Der Code muss direkt nach den vorherigen Änderungen platziert werden, da das else zu dem if gehört, das wir vorher eingefügt haben. der Code hinter $patterns[] ist der gleiche wie beim "echten" IMG Tag, das $replacement[] habe ich leicht abgeändert, so dass eben nicht wie gewünscht das Bild erscheint, sondern lediglich der Texthinweis und zwar Fett formatiert (auf die gleiche Weise wie der 'b' bbCode das tun würde, daher die beiden Zugriffe auf $bbcode_tpl[xy]).
Im Prinzip 1:1 lässt sich das auf [url] übertragen, bei den anderen Codes wären wohl nur geringfügige Änderungen nötig.

Ich denke es ist unnötig zu sagen, dass du vorher ein vollständiges Backup des Forums erstellen solltest um möglichen Datenverlust zu vermeiden. Ich habe das jetzt so einigermaßen aus dem Kopf heruntergeschrieben und es ist nicht ausgeschlossen dass noch kleinere Fehler enthalten sind.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
tts
Mitglied
Beiträge: 177
Registriert: 19.05.2007 14:14
Kontaktdaten:

Beitrag von tts »

Wird gleich getestet :)

Kannst deinen Code auch updaten, falls du einen Fehler erkennst.

EDIT: So wie hier sollte es aussehen:

http://forum.webmaster-elite.de/small-t ... oaden.html

ich verlinks mal nicht aktiv.
Nicht irgendein PC-Forum --> http://www.ttshooter.de
Guckst Du hier -> Video anschauen
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“