Как реализовать закрытие профиля пользователем

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

Аватар пользователя Artu Artu 7 декабря 2014 в 1:06

У пользователей есть права для просмотра профилей друг друга.
Но им нужна дать возможность закрыть от просмотра свой профиль, как в социальных сетях.
При этом что бы во всех местах где предусмотрена ссылка на профиль (автор ноды, автор комментария) вместо этой ссылки высвечивалась "Аноним".
Т.е. нигде реальное имя пользователя (используется Realname) не светилось. Даже при отправке сообщений PrivatMsg.

Есть ли какие то модули. Можно сделать настройку "Скрыть профиль", но как ее обрабатывать.
Может как-то завязаться с системой ролей, что бы использовать права того же PrivatMsg?

Комментарии

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 7 декабря 2014 в 11:42

"Nikit" wrote:
+ тематизация имени пользователя (если флаг установлен), то показываем anon.

Для того чтобы просто скрыть ссылку на профиль это самый перспективный вариант, но я как-то еще в шестерке делал темизацию имени пользователя, и должен сказать что вызов этой функции происходит далеко не во всех случаях, когда движок или модуль ядра дает ссылку на профиль пользователя. Возможно в семерке это было исправлено.

Аватар пользователя Artu Artu 7 декабря 2014 в 13:22

Тестирую модуль Hide Profile.
Его недостаток в том что он позволяет переопределить ссылку профиля на произвольную страницу, но не убрать ее.

В нем есть хук hide_profile_username(&$variables), пытаюсь его переопределить добавив к выводимой строке "'NNM2'.", но почему то имя пользователя не меняется почему-то.
Хотя где то ж оно ссылку на профиль переопределяет.
Может потому что Realname установлен.

Аватар пользователя Artu Artu 7 декабря 2014 в 14:56

Так еще есть hide_profile_user_view но похоже переопределить вывод имени пользователя в одном месте невозможно.
Нужно переопределять в местах вывода.

Аватар пользователя Artu Artu 8 декабря 2014 в 0:29

Krotty@drupal.org, да, если переопределять через тему _username($variables) то это метод отлично работает везде где мне нужно.
Если через модуль то не работает почему-то.
А ведь изначально эта функция (хук?) в модуле задана.

Как знать когда переопределять через модуль, а когда через тему?

Всем спасибо.

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 8 декабря 2014 в 8:15

xxx_username($variables) это не хук, этo функция темизации. И переопределять ее вы должны в теме, а не в модуле.
Тем-то этот метод и плох, что мы логику работы выносим в тему. Если на сайте используется несколько тем, то логику нужно будет дублировать в каждой из них.