У пользователей есть права для просмотра профилей друг друга.
Но им нужна дать возможность закрыть от просмотра свой профиль, как в социальных сетях.
При этом что бы во всех местах где предусмотрена ссылка на профиль (автор ноды, автор комментария) вместо этой ссылки высвечивалась "Аноним".
Т.е. нигде реальное имя пользователя (используется Realname) не светилось. Даже при отправке сообщений PrivatMsg.
Есть ли какие то модули. Можно сделать настройку "Скрыть профиль", но как ее обрабатывать.
Может как-то завязаться с системой ролей, что бы использовать права того же PrivatMsg?
Комментарии
Почти что надо делает, судя по описанию:
https://www.drupal.org/project/hide_profile
Правда уже год все еще dev..
Или Flag + Rules + тематизация имени пользователя (если флаг установлен), то показываем anon.
Для того чтобы просто скрыть ссылку на профиль это самый перспективный вариант, но я как-то еще в шестерке делал темизацию имени пользователя, и должен сказать что вызов этой функции происходит далеко не во всех случаях, когда движок или модуль ядра дает ссылку на профиль пользователя. Возможно в семерке это было исправлено.
Придётся ловить все случаи вывода юзера напрямую без
theme('username', $account)
и переопределять выводы, иначе никак...Тестирую модуль Hide Profile.
Его недостаток в том что он позволяет переопределить ссылку профиля на произвольную страницу, но не убрать ее.
В нем есть хук hide_profile_username(&$variables), пытаюсь его переопределить добавив к выводимой строке "'NNM2'.", но почему то имя пользователя не меняется почему-то.
Хотя где то ж оно ссылку на профиль переопределяет.
Может потому что Realname установлен.
Так еще есть hide_profile_user_view но похоже переопределить вывод имени пользователя в одном месте невозможно.
Нужно переопределять в местах вывода.
Копайте в направлении темизации имени пользователя, как вам уже советовали выше.
https://api.drupal.org/api/drupal/includes!theme.inc/function/theme_user...
Krotty@drupal.org, да, если переопределять через тему _username($variables) то это метод отлично работает везде где мне нужно.
Если через модуль то не работает почему-то.
А ведь изначально эта функция (хук?) в модуле задана.
Как знать когда переопределять через модуль, а когда через тему?
Всем спасибо.
xxx_username($variables) это не хук, этo функция темизации. И переопределять ее вы должны в теме, а не в модуле.
Тем-то этот метод и плох, что мы логику работы выносим в тему. Если на сайте используется несколько тем, то логику нужно будет дублировать в каждой из них.
Интересно почему эта функция была вынесена в модуль Hide_profile, для примера?