Funktion url() - Verständnisproblem oder Bug ..
am 15.05.2008 - 07:16 Uhr in
.. ich bin mir da nicht sicher. Ich verwende Drupal 5.7 und habe cleamURL's aktiviert.
Aufgabe:
Modifizierung von Drupal erstellter Links um zusätzliche Funktionalität abzubilden. Der Link wird über x_link_alter(&$links, $node) abgefangen. Die gewünschten Links werde identifiziert und sollen um "back=1" erweitert werden.
Lt. Doku soll bei internen Links die Funktion url($path = NULL, $query = NULL, $fragment = NULL, $absolute = FALSE) verwendet werden.
Die korrekte URL müßte lauten:
http:/ / localhost/xxx/node/8/back=1
Heraus kommt
http:/ / localhost/xxx/node/8?back=1
url($links->links['node_read_more']['href'],'back=1', null, true)
oder
http:/ / localhost/xxx//xxx/node/8%3Fback%3D1
url($links->links['node_read_more']['href'],'back=1', null, false)
Verwende ich die Funktion falsch oder erkennt die Funktion nicht das es sich um "gecleante" URL's handelt?
Gruß
UwBach
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo UwBach, versuch doch
am 15.05.2008 - 07:32 Uhr
Hallo UwBach,
versuch doch mal url($links->links['node_read_more']['href'] . '/back=1')
Das query Parameter wird afaik immer mit ? angehängt.
Grüße,
Robin
Grüße,
Robin
Das funktioniert ..
am 15.05.2008 - 09:39 Uhr
.. selbstverständlich, ich habe das momentan ja auch so gelöst. Die Problematik ersteht wenn Module entwickelt werden und ich nicht im Vorfeld weiß ob CleanUrl's genutzt werden oder nicht.
Nach meinem Verständnis sollte die Funktion url() einem diese Arbeit abnehmen, sonst hat die Funktion keinen Sinn und ich kann das besser selber ausprogrammieren.
Bis denne
Hallo UwBach,
am 15.05.2008 - 10:02 Uhr
Hallo UwBach,
guter Punkt.
Ich würde es in dem Fall vermutlich so versuchen:
if (strstr($links->links['node_read_more']['href'], '?q')) {
url(preg_replace('%(\?q=.*?)&%','\\1/back=1&', $links->links['node_read_more']['href']));
}
else {
url($links->links['node_read_more']['href']. '/back=1');
}
Grüße,
Robin
Grüße,
Robin