Модуль pathauto настроен на транслитерацию строк при создании синонимов путей.
Для пользователей используется шаблон
users/[user-raw].
Тогда для пользователя Цветок сирени будет создан синоним users/tsvetok-sireni
Если мы хотим получить для материала типа Видео с названием Мой Ролик, загруженного пользователем Цветок сирени, пути вида video/tsvetok-sireni/moi-rolik, то в настройках pathauto задаем шаблон для этого типа материала:
video/[author-name-raw]/[title-raw]
Для вывода всех видео одного автора мы хотим использовать пути вида video/[author-name-raw].
То есть все видео пользователя Цветок сирени должны выводиться на странице с адресом video/tsvetok-sireni.
Если мы создадим представление "Страница" Views, укажем в качестве пути video,
а в качестве аргумента user:UID (или user:username), то работать это будет только при передаче ID пользователя или его нетраслитерированного имени в качестве аргумента.
То есть это будет работать для video/Цветок сирени или video/3 (если 3 это ID пользователя Цветок сирени),
но не будет работать для video/tsvetok-sireni.
Чтобы решить эту проблему воспользуемся Валидатором Views.
В Validation options в качестве валидатора (Validator) укажем PHP Code.
Разрешим использование числовых ID и строчных имен (Allow both numeric UIDs and string usernames).
В PHP validate code введем сделующее:
$alias = 'users/' . $argument;
$url = drupal_lookup_path('source', $alias);
if ($url != false):
list($path, $userID) = split('[/]', $url);
$handler->argument = $userID;
endif;
return TRUE;
Идея этого способа исходит из этого обсуждения "настройка view c термином в аргументе при работе pathauto"
Комментарии
Хм-м-м... Спасибо! Чрезвычайно интересно и полезно.
ОГРОМНОЕ спасибо! Давно искал как это сделать.
А вот как сделать, чтобы вверху страницы было написано, например: Статьи пользователя: Иван Петров (не в транслите) ?
[ru-api=drupal_set_title]drupal_set_title[/ru-api]
А как сделать это в блоке или в шаблоне страницы?
«В Validation options в качестве валидатора (Validator) укажем PHP Code.
Разрешим использование числовых ID и строчных имен (Allow both numeric UIDs and string usernames).»
Что-то не могу понять - как можно и то и другое сразу указывать?
Вроде бы эти варианты находятся в одном выпадающем списке и подразумевают единственный выбор, либо то, либо другое. Разве не так?
Каким-то образом у меня получилось вначале сделать так, что бы транслитерированные имена пользователей срабатывали, а потом я что-то менял в настройках представления и данная возможность перестала работать. Вернуть ее пока не получается, просто не показывает ничего при подстановке ника...
PHP-код из топика ставим, как аргумент по умолчанию.
Настройки проверки: по Пользователю, Разрешенный пользовательский аргумент - цифровые UID и строки usernames
Нечто подобное, но про ноды. Там дополнительные проверки да и split скоро планируют отключить в php. Может кому понадобится.
Спасибо за решение, Красавчег просто!
Решение отличное, спасибо!
Думаю, как передавать аргумент URL не user/usernamealias/mycontent
а usernamealias/mycontent (без user, или чего-либо еще в начале пути). По идее для этого надо поставить в пути views %/mycontent но % сразу ставить нельзя
Порешал в этой теме Только в коде поменял users на user
Еще раз спасибо!
Оказывается, помог модуль Sub-path URL Aliasing. Я его ставил и даже не настраивал. http://www.drupal.ru/node/81402#comment-475353
Спасибо, то что надо для каталога!
Подскажите решение проблемы ТС под 7-ку. 4 дня гуглю ни одного рабочего решения для себя не нашел проблема один в один.
Так аргументы срабатывают: video/Цветок сирени или video/3
Так нет: video/tsvetok-sireni
Прошу хелп ми 4 дня на одном месте.