Seite 1 von 1

Extensions und relative Links

Verfasst: 05.11.2016 15:04
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

Re: Extensions und relative Links

Verfasst: 05.11.2016 17:26
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

Re: Extensions und relative Links

Verfasst: 05.11.2016 19:36
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

Re: Extensions und relative Links

Verfasst: 05.11.2016 19:58
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" :(

Re: Extensions und relative Links

Verfasst: 05.11.2016 20:49
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.

Re: Extensions und relative Links

Verfasst: 07.11.2016 20:47
von gn#36
Hilfreich vielleicht: KB:ext_erstellen