Модуль User-Selectable Roles позволяет позволяет пользователям самостоятельно выбирать роль, при редактировании своего аккаунта.
Но вот очень хочется переключение ролей вынести в блок или на страницу, без прочей лишней для этого информации, которая мельтешит в профиле.
Дайте пожалуйста дельный совет человеку не знающему PHP, однако не брезгующему при ясном описании вставить/убрать готовые фрагменты кода куда следует.
Если посчитаете такую помощь не бесплатной, пишите - поговорим, так как очень надо.
Комментарии
Пока добился открытия в блоке страницы редактирования эккаунта, вставив в блок код:
Он делает user/%/edit активной
<?php
global $user;
menu_set_active_item('user/'. $user->uid.'/edit');
return menu_execute_active_handler();
?>
Ищу дальше.
В сайт/modules/user/user.module есть такая функция
<?php/**
* Implementation of hook_user().
*/
function user_user($type, &$edit, &$account, $category = NULL) {?>
Из неё идёт вызов функции user_edit_form($form_state, (isset($account->uid) ? $account->uid : FALSE), $edit)
Именно эта, последняя функция строит страницу редактирования, и нужно в ней оставить только переключение ролей, убрав все лишнее.
Хук на модуль - user_selectable_roles_user() отрабатывает уже после того как форма в основном модуле построена.
И почему-то команда - unset($form['account']);, удаляющая элементы группы 'account' из $form, отрабатывает только в функции ядра (function user_user), но в хуке удалить элементы из формы не удается! В чем ошибка?
Как все таки убрать лишние элементы с формы с помощью хука, если форма уже ими заполнена?
Ура! Нашёл!
Поставил хук типа такого:
<?php
function user_selectable_roles_form_alter(&$form, &$form_state, $form_id) {
unset($form['account']);
unset($form['signature_settings']);
unset($form['picture']);
return $form;
}
?>
И всё, достал таки форму. Может кому пригодиться.
Спасибо всем, с такой поддержкой я быстро научусь программировать на PHP под Друпал
Как вариант модуль Masquerade