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

Аватар пользователя Dec0der

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

Модули и темы:
Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя mbaev
mbaev 3 недели назад

Можете создать филд (например, 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 3 недели назад

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

Аватар пользователя mbaev
mbaev 3 недели назад

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

  • Title - /content/title
  • Title - /content/title-0
  • Title - /content/title-1
  • ...
Аватар пользователя Andruxa
Andruxa 3 недели назад

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

Аватар пользователя mbaev
mbaev 3 недели назад

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

Аватар пользователя Andruxa
Andruxa 3 недели назад

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

Аватар пользователя mbaev
mbaev 3 недели назад

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

Аватар пользователя jsv
jsv 2 недели назад

А что, можно было бы написать модулёк для этого, только я не уверен что он уже не написан

Аватар пользователя BatKor
BatKor 2 недели назад

Делайте валидацию по полю? Или что то не понимаю

Аватар пользователя jsv
jsv 2 недели назад

В каком смысле? По какому полю?

Аватар пользователя BatKor
BatKor 2 недели назад

Ну по полю где добавляете алиас, что бы при вводе сразу высвечивалось что алиас занят.

Аватар пользователя BatKor
BatKor 2 недели назад

Велосипед ведь построили давно, в соц сетях.

Аватар пользователя xakudu
xakudu 1 неделя назад

Готов сделать мелкий модулёк для решения этой проблемы, обращайтесь в личку