Может ли модуль RULES заменить функционал Field Permissions ???
Просто захотелось при редактирование собственного аккаунта (для определенной роли) скрыть создание/редактирование/просмотр поля - но это модуль не выполняет почему то.
работает только
1. если вообще галки не ставить в пермишенах у роли - пользователь, то не выводится поля при редактирование.
2. если роль - админ у которой в пермишенах стоят галки views и edit - видит поле на чужих страницах редактирования аккаунтов юзеров.
остальные галки не работают для поля. почему то
Комментарии
может сам модуль допилить условия для аккаунтов прописать... а то там все больше для нод. а не для аккаунтов.
скрыл пока что так в своем модуле заюзав хук и написав следующий код
<?phpif ($form_id == 'user_profile_form'){
global $user;
if (4 == $user->uid and $user->uid == $account->uid) {
$form['field_hide_block_advertising']['#access'] = false;
}
}?>
но хочется что-то по универсальнее. наверное нужно user access прописать какой нить...
что условие $user->uid == $account->uid
не работает
$user, если взято из global $user; - текущий пользователь (ты)
$account, если взято из user_load() - любой другой
я и так делал
<?php
if ($form_id == 'user_profile_form'){
global $user;
$account = user_load();
if (4 == $user->uid and $user->uid == $account->uid) {
$form['field_hide_block_advertising']['#access'] = false;
}
}?>
Я припоминаю год назад или около того ты постил похожий странный код, где user_load() без аргумента Это запоминается
да.про аргумент я помню. но что то не соображу. толи так user_load(arg(0)) толи как то иначе
так тоже чото не тянет инфу
$account = user_load($user->uid);
--передумал
объясни смысл этого кода
и так не катит
$account = user_load(array('uid' => $uid));
ну я эти коды беру из гугла.
объяснить... ну видимо тянет uid из юзера и передает его $account
и такое не работет
user_load($array = array())
и такое $account = user_load($uid);
тебе для начала надо уяснить что такое пхп функция , что такое её аргументы, что такое массив, что такое объект. Так что начни с этого
так му наю что это
функция название_функции (тут её аргументы через запятую).
и ещё https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/arg/7
такая строчка тоже не помагает $account = user_load($uid, $reset = FALSE);
апи друпала 7 пишет что нужно
$account = user_load($user->uid); // Load a user object
http://ryangambito.com/blog/drupal-7-how-embed-user-account-form-block
$account тебе нужен чтобы взять из него uid и проверить, находится ли текущий юзер в своём профиле? Id аккаунта можно просто взять из УРЛ
<?php
$args
= arg();if ((isset($args[0]) && $args[0] == 'user') && (isset($args[1]) && is_numeric($args[1]))) {
// мы на странице юзера
$account_uid = $args[1];
global $user;
if ($user->uid == $account_uid) {
// текущий юзер в своём профиле
}
} ?>
Код рабочий, спасибо. if - навороченное какое то.
чья бы корова мычала
К чему этот пост? а за что $args = arg(); отвечает?
так вроде ж получает массив аргументов