Willkommen im neuen Forum von concrete5.de.
Die Anmeldung ist ab dem 15.10.2020 nur noch mit E-Mail Adresse und Passwort möglich. Eine Anmeldung mit Benutzername ist nicht mehr möglich.

Diese Nachricht löschen.
Anhang entfernen?
Zurück zur Themenliste
T
tts 0.png 12.02.2013 20:30

urlify: Schrägstriche in Bindestriche umwandeln

Hi Remo, wenn ich früher (d.h. vor Version 5.6) eine Seite mit dem Namen "Produkte/Lösungen" erstellt habe, wurde folgende URL erzeugt: meinedomain.de/produkte-loesungen Seit der Integration von urlify in 5.6 funktioniert das aber nicht mehr. Ich habe die Datei "libraries/3rdparty/urlify.php" so geändert, dass zumindest die Umlaute wieder richtig konvertiert werden: 'latin_map' => array ( ... 'ö' => 'oe' ... usw. ) Aber der Schrägstrich wird nicht mehr zu einem Bindestrich umgewandelt, sondern einfach weggelassen: meinedomain.de/produkteloesungen Ich finde, das ist nicht optimal. Hast du dafür ne Lösung?
R
Remo 0.png 12.02.2013 20:43
Hi Karl da stimm ich dir zu und ja ich hab eine Lösung. Momentan allerdings nur, indem du Urlify direkt anpasst. Wenn du die Methode "filter" anschaust, dann findest du ein paar Regex Befehle. Hier die Variante die das gewünschte Ergebnis liefern sollte: $text = preg_replace ('/[^-\w\s\/]/', '', $text); // remove unneeded chars $text = preg_replace ('/^\s+|\s+$/', '', $text); // trim leading/trailing spaces $text = preg_replace ('/[-\s\/]+/', '-', $text); // convert spaces to hyphens Im ersten Replace hab ich gesagt, dass auch ein Slash stehen gelassen werden soll. Angegegeben mit \/ (muss kodiert werden). Im letzten Replace hab ich dann erneut \/ eingetragen damit nur nur Leerzeichen (\s) in ein Bindestrich umgewandelt wird. Wir versuchen ein Event in den Core zu bekommen, mit dem man sowas in einem Add-on tun könnte. Mein Ziel ist es, dass man ein kleines Add-on hat wo man die Urlify Einstellungen konfigurieren könnte. Hier findest du noch etwas mehr Informationen: https://github.com/concrete5/concrete5/pull/877 Viele Grüsse Remo
T
tts 0.png 24.06.2014 15:22
Hi Remo, ich hätte gerade versucht, die urlify.php von 5.6.3.1 entsprechend anzupassen. Folgende Zeilen habe ich geändert (dreimal \/ ergänzt): $remove_pattern = ($file_name) ? '/[^-.\w\s\/]/' : '/[^-\w\s\/]/'; $text = preg_replace ('/[-\s\/]+/', '-', $text); // convert spaces to hyphens Klappt aber leider nicht. Schrägstriche werden nicht in Bindestriche konvertiert, sondern wieder weggelassen. Du weißt sicher, woran's liegt ... Gruß Karl
R
Remo 0.png 24.06.2014 17:07
Bist du sicher, dass $text einen Schrägstrich enthält? Das Pattern /[-\s\/]+/ wäre schon korrekt. Ich vermute, dass das irgendwo früher angepasst entfernt wird
T
tts 0.png 24.06.2014 18:09
Hab gerade festgestellt, dass eine Änderung an $text überhaupt keine Auswirkung mehr hat: $text = preg_replace ('/[-\s]+/', 'test', $text); // convert spaces to hyphens Hier müssten ja Leerzeichen eigentlich zu "test" umgewandelt werden. Stattdessen werden sie aber ganz normal zu Bindestrichen umgewandelt ...
R
Remo 0.png 25.06.2014 14:09
Auch dieses Regex Pattern ist korrekt, die Frage ist nur was schon vorher in $text steht. Ich seh im Orignal-Code aber nirgends $text...?
T
tts 0.png 25.06.2014 14:26
Du siehst im Originalcode nirgends $text? Dann habe ich vermutlich die falsche Datei bearbeitet: concrete/libraries/3rdparty/urlify.php Ab Zeile 198.
R
Remo 0.png 25.06.2014 15:12
das kommt nach downcode.. Funktioniert das Event on_page_urlify nicht? Das wäre viel eleganter als direkt im Code rumzuwurschteln > https://github.com/concrete5/concrete5/pull/877/files

Nachricht hinzufügen