[3.3] $_GET im Template abfragen

Alles zu Styles, Templates, Icons und Smilies für phpBB 3.3, sowie allgemeine Designfragen zur Integration von phpBB in bestehende Websites.
Forumsregeln
Bei Style spezifischen Fragen ist der Stylename und die Downloadquelle des Styles erforderlich sowie die URL vom betroffenen Forum.
serpent_driver
Mitglied
Beiträge: 9
Registriert: 17.07.2020 07:59

[3.3] $_GET im Template abfragen

Beitrag von serpent_driver »

Hallo Miteinander,

nachdem ich mir nun 2 Tage lang einen Wolf nach einer Lösung gesucht habe, muss ich nun doch das Forum bemühen. Deswegen schon mal Danke im Voraus. Nachdem mir phpBB noch vergleichsweise neu ist, was auch für Twig gielt, weil eher Smarty Jünger, bitte ich um Nachsicht.

Worum gehts? Ich muss innerhalb des Templates die Existenz von $_GET abfragen können. Wofür es unter Smarty reservierte Variablen für so was gibt und man deswegen nicht erst was coden muss, scheint gemutmaßt mit Twig alles andere als eine Selbstverständlichkeit zu sein. Deswegen meine Frage, was muss man unter Twig machen, um einen GET Parameter im Template abfragen zu können?

Danke
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 11951
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: [3.3] $_GET im Template abfragen

Beitrag von Crizzo »

Hi,

was genau bezweckst du mit der Prüfung, ob $_GET existiert? :-?

Grüße
serpent_driver
Mitglied
Beiträge: 9
Registriert: 17.07.2020 07:59

Re: [3.3] $_GET im Template abfragen

Beitrag von serpent_driver »

Kannst Du mit "Edge Side Includes" (ESI) was anfangen? Falls nicht, wirds schwer den Zweck zu beschreiben.
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 11951
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: [3.3] $_GET im Template abfragen

Beitrag von Crizzo »

Ne, sry, sagt mir nur was vom Prinzip.

Ich hab mich mal ein wenig umgehört, hab aber bisher keine Antwort für deine Frage gefunden.
serpent_driver
Mitglied
Beiträge: 9
Registriert: 17.07.2020 07:59

Re: [3.3] $_GET im Template abfragen

Beitrag von serpent_driver »

Das kann doch nicht sein, dass die Abfrage von $_GET (im Template) so was exotisches ist?!

Automatisch dem Beitrag hinzugefügt nach 3 Minuten 11 Sekunden. Bitte Regel für „Topic-Bumping“ beachten. Danke.

Mal ganz blöd gefragt und auch nur weil mir Twig so was von fremd ist, lässt sich innerhalb von Template Dateien mit PHP Code arbeiten?
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 11951
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: [3.3] $_GET im Template abfragen

Beitrag von Crizzo »

serpent_driver hat geschrieben: 17.07.2020 12:02 Das kann doch nicht sein, dass die Abfrage von $_GET (im Template) so was exotisches ist?!
Naja, in der Regel wird in den .php-Dateien der PHP-Code ausgeführt und der definiert dann Template-Variablen, die dann auch TRUE oder FALSE zurückgeben können. D.h. die Abfrage findet "vorher" und "woanders" statt.
serpent_driver hat geschrieben: 17.07.2020 12:02 Mal ganz blöd gefragt und auch nur weil mir Twig so was von fremd ist, lässt sich innerhalb von Template Dateien mit PHP Code arbeiten?
Ja, das geht. Musst du im Admin-Bereich > Sicherheit aktivieren und dann kannst du das verwenden: https://area51.phpbb.com/docs/33x/codin ... templating

Grüße

Edit: https://twig.symfony.com/doc/2.x/advanced.html#globals Ich weiß halt nicht, ob das von phpBB 3.3.0 unterstützt wird.
serpent_driver
Mitglied
Beiträge: 9
Registriert: 17.07.2020 07:59

Re: [3.3] $_GET im Template abfragen

Beitrag von serpent_driver »

Crizzo hat geschrieben: 17.07.2020 12:14 Ja, das geht. Musst du im Admin-Bereich > Sicherheit aktivieren und dann kannst du das verwenden: https://area51.phpbb.com/docs/33x/codin ... templating
Nee, das kann die Lösung auch nicht sein, weil ich dann jedem phpBB Betreiber abverlangen müsste die Sicherheit aufzuweichen. Das wofür ich das brauche, ist eben für die Masse gedacht und nicht nur für den persönlichen Gebrauch.....

Ich geh mal weiter suchen. Danke erstmal!
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 11951
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: [3.3] $_GET im Template abfragen

Beitrag von Crizzo »

Evlt. lohnt es sich den Umweg über eine Extension zu gehen, die dir dann die jeweiligen Template-Variablen einrichtet, die dein Style dann nutzt. Die müsste dann halt parallel zum Style installiert werden, ist evtl. komfortabler für den User als eine ACP-Einstellung zu ändern.
serpent_driver
Mitglied
Beiträge: 9
Registriert: 17.07.2020 07:59

Re: [3.3] $_GET im Template abfragen

Beitrag von serpent_driver »

Verzeih mir bitte Kritik, aber für so was eigentlich essentielles wie die Abfrage von $_GET extra eine Extension schreiben zu müssen, fehlt mir jeder Bezug. Vielleicht liegts auch daran, dass ich Twig zu sehr mit Smarty vergleiche. Template Engine scheint dann doch nicht gleich Template Engine zu sein.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5387
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: [3.3] $_GET im Template abfragen

Beitrag von oxpus »

serpent_driver hat geschrieben: 17.07.2020 12:32 Verzeih mir bitte Kritik, aber für so was eigentlich essentielles wie die Abfrage von $_GET extra eine Extension schreiben zu müssen, fehlt mir jeder Bezug. [...]
Öhm, mir fehlt das Verständnis nach einem Anwendungsfall, warum $_GET direkt im Template abgefragt werden sollte.
Zumal die direkte Verwendung von $_POST und $_GET sowie anderer Super Globals aus gutem Grund durch das phpBB im Standard unterbunden werden; allem voran aufgrund möglicher Sicherheitslücken, die dabei entstehen können, egal ob bei der Verwendung im Template oder in einem PHP Script.

Dabei ergibt sich normalerweise folgendes "Minimalscript"; die verwendeten Objekte dabei mal als "eingebunden" vorausgesetzt:

Code: Alles auswählen

$wert = $request->variable('wert', 0); // Als Zahl (0), ansonsten '' verwenden, um einen String auszuwerten -> hierbei wird $_REQUEST ausgewertet!

if (!empty($wert))
{
	$template->assign_var('S_WERT', true);
}
Man kann aber auch explizit $_GET abfragen:
$wert = $request->variable('wert', 0, false, \phpbb\request\request_interface::GET);
false als 3. Parameter bedeutet hierbei die Unterbindung von Multibyte-Zeichen, was bei Texten sinnvoll wäre (dann also eher true verwenden).

Und im Template kann dann letztlich per Bedingung darauf reagiert werden:

Code: Alles auswählen

{% if S_WERT %}
// Anzuzeigender Inhalt
{% endif %}
Wo ist also das Problem?
"Edge Side Includes" wird doch bereits durch das phpBB selber gewährleistet, da bereits nur die Inhalte dem Template übergeben und "aktiviert" werden, die letztlich auch angezeigt werden sollen. Da machen für mich template-bezogene Bedingungen auf $_GET keinen Sinn mehr.
Zumal man auch über Module im Webserver dafür sorgen kann, dass Elemente nachgeladen werden können, also z. B. Bilder oder Javascript, wenn die Seite ansonsten fertig geladen wurde.

Wenn es aber darum geht, lediglich ein phpBB-Template zu erstellen, welches auf Werte aus Super Globals reagieren soll, um Edge Side Includes zu ermöglichen, dann würde ich eher zu Javascript raten, anstatt $_GET direkt im Template verwenden zu wollen: https://www.javascript-kurs.de/javascri ... nutzen.htm
Zuletzt geändert von oxpus am 17.07.2020 13:16, insgesamt 2-mal geändert.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Antworten

Zurück zu „Styles, Templates und Grafiken“