Как пользователю задавать синоним для своего профиля?

Главные вкладки

Аватар пользователя Dec0der Dec0der 23 октября 2017 в 16:53

Есть модуль Pathauto, который позволяет автоматически задавать синонимы в том числе и для профиля юзера.
А есть ли решение как сделать чтобы юзер сам мог задавать синоним у себя в профиле?
Чтобы при регистрации синоним задавался автоматически, но юзер мог бы его менять на свой.
Как это сделать?

Комментарии

Аватар пользователя mbaev mbaev 23 октября 2017 в 20:52

Можете создать филд (например, path_alias) в профиле пользователя, выставить его дефолтное значение в users, а в шаблонах использовать токены [user:field_path_alias]/[user:name].

Получится, что у пользователей будет возможность создавать пути вида <custom path>/<username>.

Если этого не достаточно и хочется убрать ограничение в виде обязательного имени пользователя в конце пути (<username>), то можно немного накодить: используя хук hook_form_FORM_ID_alter, добавьте свою submit функцию и добавляйте в филд path_alias введённое имя пользователя, так чтобы, когда новый пользователь регистрируется в этом филде автоматическим прописывалось бы что-то вроде users/vasya. В таком случае, в шаблоны будет достаточно добавить только филд [user:field_path_alias] и вуаля!

Аватар пользователя Andruxa Andruxa 24 октября 2017 в 3:35

Добавлю, что для поля path_alias надо будет сделать проверку на уникальность - чтобы 2 пользователя не могли указать себе одинаковый синоним.
У Field validation есть проверка на уникальность поля, или же Unique field, но он не прошел проверку безопасности.

Аватар пользователя mbaev mbaev 24 октября 2017 в 12:12

А Path Alias сам добавит цифру в конце, если значение не уникальное. Например, у нод названия могут быть одинаковые, но создаются всегда разные алиасы.

  • Title - /content/title
  • Title - /content/title-0
  • Title - /content/title-1
  • ...
Аватар пользователя Andruxa Andruxa 24 октября 2017 в 13:58

Верно, но юзер будет видеть у себя в профиле значение поля без цифр, а алиас в урле - с цифрами.
Начнутся лишние вопросы.

Аватар пользователя mbaev mbaev 24 октября 2017 в 14:01

Тоже верно. С другой стороны пользователь вводит в поле "best-user", а после сохранения там "best-user-999" тоже не понятно.
Думаю, это уже логические вопросы принимать решения по ним должен ТС.

Аватар пользователя Andruxa Andruxa 24 октября 2017 в 15:24

Вообще, идея не очень.
Всякие малолетние кулхацкеры начнут делать себе алиасы root, admin, etc. и включать социальную инженерию.
Я бы оставил id, а хорошим людям, за пиво, можно и руками поменять.

Аватар пользователя mbaev mbaev 24 октября 2017 в 16:02

Если говорить про идею, то в общем-то все позволяют менять часть адреса: vk, youtube, gitlab, bibucket
В принципе ничего страшного в этом нет. Главное разумно подойти к задаче. Можно составить список исключений, которые нельзя вводить в поле.