Wie mit Bindestrichen in contextual View Filter Argument umgehen?
am 20.01.2017 - 09:32 Uhr in
Hallo zusammen,
in einer Drupal 7 Installation gibt es einen Content Type "documents". Im CCK-Field "Publisher" ist der Verfasser definiert.
Für den Node "Geschichte des 20. Jahrhunderts" steht z.B. "Otto Meier" in "Publisher".
Unter der URL /documents/publisher/% gibt es eine View, die alle Dokumente eines bestimmten Publishers auflistet. Als Contextual Filter wird dabei der Publisher-Name übergeben, für dieses Beispiel so:
/documents/publisher/Otto-Meier.
In allen Template-Links, die auf die View verweisen, werden Leerzeichen im Publisher-Name durch Bindestriche ersetzt. Der Contextual Filter selber ist so eingestellt, dass er bei der Validierung Bindestriche wieder durch Leerzeichen ersetzt.
Das funktioniert perfekt, bis auf eine Ausnahme. Wenn der Publisher Name selbst schon einen Bindestrich enthält, dann funktioniert es nicht. Der Publisher "Karl-Otto Meier" hätte diese View URL: /documents/publisher/Karl-Otto-Meier. Das funktioniert in der Auflösung nicht, weil die View für "Karl Otto Meier" ohne Bindestrich nichts findet.
Hat jemand eine Idee, wie ich diese Sonderfälle abhandeln kann. Das ist höchstens 1% aller Fälle, aber trotzdem ist es natürlich unschön.
Bin für jeden Tipp dankbar.
Grüße, rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
Der grundsätzliche Fehler
am 20.01.2017 - 11:59 Uhr
Der grundsätzliche Fehler liegt darin, ein Ersatzzeichen zu nehmen, das selbst vorkommen kann. Das ist ein NoGo!!!
Warum übergibst Du denn keine Leerzeichen? Die werden intern durch %20 ersetzt, was aber wiederum ein Leerzeichen ist. Es gibt also gar keine Notwendigkeit des Ersetzens durch ein Minus-Zeichen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
wla schrieb Der
am 20.01.2017 - 15:05 Uhr
Der grundsätzliche Fehler liegt darin, ein Ersatzzeichen zu nehmen, das selbst vorkommen kann. Das ist ein NoGo!!!
Warum übergibst Du denn keine Leerzeichen? Die werden intern durch %20 ersetzt, was aber wiederum ein Leerzeichen ist. Es gibt also gar keine Notwendigkeit des Ersetzens durch ein Minus-Zeichen.
Weil das schlechte SEO URLs gibt, deshalb die Ersetzung durch "-"