Extensions und relative Links

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
mbld
Mitglied
Beiträge: 30
Registriert: 18.10.2016 16:59

Extensions und relative Links

Beitrag von mbld »

Hallo,

ich baue mir gerade eine Extension, die verschiedene Seiten mit Daten aus einer fremden Datenbank im Forum anzeigen soll.

Der Aufruf der Seiten erfolgt dann z.B. über forum/app.php/meine_seiten/seite1 oder forum/app.php/meine_seiten/seite2 usw.

Soweit funktioniert das schon.

Mein Problem ist, dass relative Links nicht mehr funktionieren, sobald eine meiner Seiten aufgerufen wurde, da ja dann alles relativ zu forum/app.php/meine_seiten/ aufgelöst wird, anstatt relativ zu forum/.

Habe ich z.B. im Header-Bereich einen Link eingebaut, der auf index.php zeigt, dann wird versucht forum/app.php/meine_seiten/index.php aufzurufen.

Die Frage wäre also, kann man extensions so konfigurieren, dass die URLs für die Seiten (Controller) direkt unter der Forums-Root liegen?

Danke
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Extensions und relative Links

Beitrag von tas2580 »

Links die auf Seiten der Extension verweisen sollten mit $this->helper->route('deine_route', array('id' => $id)) ausgegeben werden. Für Links auf andere Seiten im Forum kannst du $phpbb_root_path verwenden. Damit sollten eigentlich alle Links korrekt sein.

Du kannst dir auch mal den base Tag anschauen, damit kann man die Basis für relative Links angeben.

Gruß Tobi
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
mbld
Mitglied
Beiträge: 30
Registriert: 18.10.2016 16:59

Re: Extensions und relative Links

Beitrag von mbld »

Hallo Tobi,

erst mal Danke für die Antwort (Bin - als phpBB Anfänger - zum zweiten Mal begeistert, wie schnell man hier Hilfe erhält).

Ich nutze die Extension dmzx/linkmenu um Links im Header anzuzeigen. Dort kann man die Links nur als Text eintragen (d.h. das Coding, das mir den Link dynamisch berechnet, nützt hier nichts).
Wenn ich nun zwei relative Links dort eintrage, z.B. app.php/meine_seiten/seite1 und app.php/meine_seiten/seite2, dann funktioniert der erste noch. Wenn man dann aber (ohne vorher auf eine andere Forums-Seite zurück zu gehen) den zweiten anklickt, wird er aufgelöst in forumsroot/app.php/meine_seiten/app.php/meine_seiten/seite2.
Ich kann natürlich die o.g. linkmenu extension modifizieren (was dann wohl auch meine Lösung sein wird).
Auf $phpbb_root_path war ich dabei auch schon gestoßen. Allerdings zeigt die globale variable, selbst wenn man zuvor app.php/meine_seiten/seite1 aufgerufen hat, auf "./".
Erst zusammen mit

Code: Alles auswählen

$path_prefix = append_sid("{$phpbb_root_path}");
wird dann "./../../" daraus.

Danke für den Tipp mit dem base-Tag. Das könnte meine Modifikation noch ein bisschen vereinfachen.

Gruß,
mbld
mbld
Mitglied
Beiträge: 30
Registriert: 18.10.2016 16:59

Re: Extensions und relative Links

Beitrag von mbld »

Kleiner Nachtrag:

Das mit dem base-Tag ist keine gute Idee.
Wenn beim Aufruf von app.php/meine_seiten/seite1 base z.B. auf "./../../" gesetzt wird, dann funktionieren zwar meine Links im linkmenu korrekt, aber der Link zur ACP tut z.B. nicht mehr.
Das liegt daran, dass der Link zur ACP auch relativ ist, und eigentlich korrekt auf "./../../adm/index.php" zeigt. (Wenn ich es richtig verstanden habe, weil in includes/functions.php Zeile 5459 U_ACP über append_sid gesetzt wird)
Durch das base-tag wird er dann aber zu "./../../../../adm/index.php" :(
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5386
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Extensions und relative Links

Beitrag von oxpus »

Für Links zu eingenen Extension-Seiten solltest du immer $this->helper->route('deine_route', array('id' => $id)) verwenden. Den Rest macht dann das Forum.
Alle anderen Forenlinks kann man mit append_sid($phpbb_root_path)  oder im ACP/MCP/UCP-Modul mit $this->u_action darstellen.
Dann muss man nicht mühsam erst eigene Pfade über umständliche Bedingungen erstellen.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Extensions und relative Links

Beitrag von gn#36 »

Hilfreich vielleicht: KB:ext_erstellen
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.
Antworten

Zurück zu „Extension Bastelstube“