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.
mbld
Mitglied
Beiträge: 5
Registriert: 18.10.2016 16:59

Extensions und relative Links

Beitragvon mbld » 05.11.2016 15:04

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
Ehemaliger
Beiträge: 2803
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Extensions und relative Links

Beitragvon tas2580 » 05.11.2016 17:26

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: 5
Registriert: 18.10.2016 16:59

Re: Extensions und relative Links

Beitragvon mbld » 05.11.2016 19:36

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: 5
Registriert: 18.10.2016 16:59

Re: Extensions und relative Links

Beitragvon mbld » 05.11.2016 19:58

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
Ehemaliger
Beiträge: 5065
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Extensions und relative Links

Beitragvon oxpus » 05.11.2016 20:49

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
Administrator
Administrator
Beiträge: 9175
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Extensions und relative Links

Beitragvon gn#36 » 07.11.2016 20:47

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.


Zurück zu „Extension Bastelstube“