Как вывести переключение ролей в блок?

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

Аватар пользователя merlin merlin 15 февраля 2011 в 23:23

Модуль User-Selectable Roles позволяет позволяет пользователям самостоятельно выбирать роль, при редактировании своего аккаунта.
Но вот очень хочется переключение ролей вынести в блок или на страницу, без прочей лишней для этого информации, которая мельтешит в профиле.

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

Комментарии

Аватар пользователя merlin merlin 22 февраля 2011 в 1:51

Пока добился открытия в блоке страницы редактирования эккаунта, вставив в блок код:
Он делает user/%/edit активной

<?php 
global $user;
menu_set_active_item('user/'$user->uid.'/edit');
return 
menu_execute_active_handler();
?>
Аватар пользователя merlin merlin 22 февраля 2011 в 12:23

Ищу дальше.
В сайт/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), но в хуке удалить элементы из формы не удается! В чем ошибка?

Как все таки убрать лишние элементы с формы с помощью хука, если форма уже ими заполнена?

Аватар пользователя merlin merlin 22 февраля 2011 в 19:09

Ура! Нашёл!

Поставил хук типа такого:

<?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 под Друпал Smile