Как вывести в Drupal 7 поля профиля в зависимости от роли?

В одном проекте часть функционала отводится профилю и разграничению ролей. Предполагаются как обычные зарегистрированные пользователи, так и верифицированные. Каждая из ролей должна видеть персональную информацию только у подобных пользователей, т.е. схематически:

  • гости видят только фотографии участников;
  • авторизированные неверифицированные видят часть инфы только у подобных себе;
  • авторизованные верифицированные видят всю инфу только у подобных себе.

На первый взгляд показалось космосом, а коробочные решения не столь гибки при детальном рассмотрении. Что же делать? Одна из модальностей решения задачи: 1. создаются две отдельные роли:

  • роль верифицированный;
  • роль неверифицированный;

2. модуль autoassignrole назначает свежерегу роль неверифицированный. 3. через rules создаётся условие:

  • если пользователю назначили роль верифицированного, то снимать роль неверифицированный.

4. в профиле пользователя 'user-profile.tpl.php' определён порядок вывода полей для каждой из ролей. Предположим, что 1 - это верифицированный, 6 - это неверифицированный, а 2 - это гость. Всё, что нам необходимо задать - проверить роль текущего пользователя и соответственно выдать нужную информацию: roles[1]) { ?> Любое сообщение для верифицированного roles[2]) { ?> Любое сообщение для гостя roles[6]) { ?> Любое сообщение для неверифицированного

Комментарии к записи

В качестве альтернативы может быть модуль User role field. Между прочим, проще и удобнее.

Plain text

Target Image