Styledemo per Link: WIE?

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Snippets können über unser Kontaktformular eingereicht werden (bitte als vollständiger, Copy&Paste fähiger Beitrag).
Bei Fragen oder Problemen benutze bitte das Forum [3.0.x] Mod Support.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
silverwolf
Mitglied
Beiträge: 9
Registriert: 21.11.2004 15:07

Styledemo per Link: WIE?

Beitrag von silverwolf »

Hallo,

auf dieser Seite kann man einfach auf einen als "Link" definierten Eintrag klicken und phpbb3 wechselt dann durch den übergebenen Parameter "?style=<nr>" temporär das Aussehen.

Ich habe das versucht nachzustellen, indem ich Links definiert habe, die auf mein Forum selbst verweisen - mit dem oben genannten Parameter.

Solange ich als Admin angemeldet bin, klappt das auch wunderbar! Aber sobald sich ein normaler User daran versucht, funktioniert der Stilwechsel nicht mehr.

Weiß jemand hier, wie man das für alle Benutzer realiseren kann?
silverwolf
Mitglied
Beiträge: 9
Registriert: 21.11.2004 15:07

Beitrag von silverwolf »

@Dr.Death: Nur rein interessehalber: Warum wurde das Posting verschoben? Meine Anfrage ist doch recht eindeutig administrativer Natur und gehört weniger in den Bereich 'Mods und Styles'. ??
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

silverwolf hat geschrieben:@Dr.Death: Nur rein interessehalber: Warum wurde das Posting verschoben? Meine Anfrage ist doch recht eindeutig administrativer Natur und gehört weniger in den Bereich 'Mods und Styles'. ??
Es hat wohl offensichtlich etwas mit Styles zu tun, und außerdem ist dafür soweit ich weiß eine Modifikation nötig.

Nichts desto trotz glaube ich, davon schonmal auf phpbb.com gelesen zuhaben. Aber ich weiß leider nicht mehr, ob im Request (Nachfrage)-Forum oder im Entwicklerbereich. (Aber die Seite ist mir gerade zulangsam, als dass ich danach suchen würde). Da die Funktion aber schon vorhanden ist, dürfte die Änderung wohl nicht all zu groß sein. Allerdings weiß ich nicht in welcher Datei man da suchen könnte.
kein Support per PN
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17405
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Moin,

ich habe es verschoben, weil die unmodifizierte phpBB3 Version nur den Admins erlaubt diesen "Switch" zu verwenden.

Um es allen Usern zu ermöglichen müssten Dateien modifiziert werden....


Die benötigte Änderung liegt in der includes/sessions.php:

SUCHE:

Code: Alles auswählen

		if (!empty($_GET['style']) && $auth->acl_get('a_styles'))
		{
			global $SID, $_EXTRA_URL;

			$style = request_var('style', 0);
			$SID .= '&style=' . $style;
			$_EXTRA_URL = array('style=' . $style);
		}
		else
		{
			// Set up style
			$style = ($style) ? $style : ((!$config['override_user_style']) ? $this->data['user_style'] : $config['default_style']);
		}
Die erste Zeile beinhaltet die Berechtigungsabfrage, wer den Schalter "style" in der URL benutzen darf.
if (!empty($_GET['style']) && $auth->acl_get('a_styles'))
Auf deutsch:

Wenn der Schalter " style=x " vorhanden ist und der Benutzer das Administrative recht hat Styles zu verändern, wird der folgende Code wirksam.

Möchtest Ihr es den Usern überlassen, sollte es so aussehen:

Code: Alles auswählen

if (!empty($_GET['style']))
Die Gefahr dabei:

Wenn jemand den Schalter " style=x " verwendet, und x ist eine Zahl, die nicht auf eine Style ID trifft, hagelt es Fehlermeldungen ;-)
silverwolf
Mitglied
Beiträge: 9
Registriert: 21.11.2004 15:07

Beitrag von silverwolf »

Ah! <Licht> Vielen Dank! :-)
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

Dr.Death hat geschrieben:Die Gefahr dabei:

Wenn jemand den Schalter " style=x " verwendet, und x ist eine Zahl, die nicht auf eine Style ID trifft, hagelt es Fehlermeldungen ;-)
betrifft aber derzeit auch Admins...
Ein kleiner Fix hier für:
finde:

Code: Alles auswählen

		{
			global $SID, $_EXTRA_URL;

			$style = request_var('style', 0);
			$SID .= '&style=' . $style;
			$_EXTRA_URL = array('style=' . $style);
		}
ersetze mit:

Code: Alles auswählen

		{
			global $SID, $_EXTRA_URL;

			$pre_style = $style;
			$style_exists = false;
			$style = request_var('style', 0);
			$sql = 'SELECT style_id
				FROM ' . STYLES_TABLE . '
				WHERE style_id = ' . $style;
			$result = $db->sql_query($sql);
			while ($row = $db->sql_fetchrow($result))
			{
				$style_exists = true;
			}
			if ($style_exists)
			{
				$SID .= '&style=' . $style;
				$_EXTRA_URL = array('style=' . $style);
			}
			else
			{
				$style = ($pre_style) ? $pre_style : ((!$config['override_user_style']) ? $this->data['user_style'] : $config['default_style']);
			}
		}
Es macht zwar eine zusätzliche SQL-Abfrage nötig, aber besser wie eine Fehlermeldung.

Dabei wird dann der Style aus dem ACP-geladen, bzw erst aus den Usereinstellungen.
kein Support per PN
silverwolf
Mitglied
Beiträge: 9
Registriert: 21.11.2004 15:07

Beitrag von silverwolf »

nickvergessen hat geschrieben:Es macht zwar eine zusätzliche SQL-Abfrage nötig, aber besser wie eine Fehlermeldung.
SEHR schön! Vielen Dank!
Antworten

Zurück zu „[3.0.x] Snippets“