Здравствуйте!
Возникла неожиданная проблема там, где её не ждали. Суть в том, что у меня есть views, который выводит список материалов. В качестве аргумента я скармливаю ему имя пользователя, чтобы получить список материалов, созданных этим пользователем. И всё бы ничего, но views принимает аргумент в виде строки, отличной от той, что используется в URL во всех остальных случаях (спасибо Pathauto). Путём манипуляций с параметрами аргумента я нашёл комбинацию (lowercase и spaces to dashes для пути), с которой большая часть аргументов становится похожа на те, что хотелось бы видеть, но всё равно не все. Например, представим, что есть пользователи с именами Ingumsky, John Smith, jack_brown, S.White, He is Awesome, Паша. Ниже я привожу, как выглядят аргументы для моего вьюса, каково имя пользователя и [в квадратных скобках], как выглядит имя пользователя в большинстве URL Друпала:
При запросе example.net/my_view/ingumsky — вьюс выдаёт материалы пользователя Ingumsky [ingumsky]
При запросе example.net/my_view/john-smith — вьюс выдаёт материалы пользователя John Smith [john-smith]
При запросе example.net/my_view/jack_brown — вьюс выдаёт материалы пользователя jack_brown [jackbrown]
При запросе example.net/my_view/s.white — вьюс выдаёт материалы пользователя S.White [swhite]
При запросе example.net/my_view/he-is-awesome — вьюс выдаёт материалы пользователя He is Awesome [he-awesome]
При запросе example.net/my_view/паша — вьюс выдаёт материалы пользователя Паша [pasha]
Как видно, в тех случаях, когда в именах пользователей встречаются знаки подчёркивания, точки, кириллица или даже некоторые английские слова, которые неважны для SEO (is, are и тому подобное), аргумент отличается от распространённого в drupal отображения. Вопрос следующий: Как добиться того, чтобы скармливаемый вьюсу аргумент всегда выглядел так же, как выглядит ник в URL, созданном Pathauto?
Комментарии
заведите для юзера новое поле - transliterated name, и фильтруйте по нему
Спасибо за совет, а как мне автоматически заполнить это поле для всех пользователей?
свой код или rules
Спасибо! Я уже нашёл более изящное решение — решил воспользоваться php в аргументе. Сейчас подробнее опишу — авось кому пригодится ещё.
Тут расписал подробно: http://www.drupal.ru/node/67625