[РЕШЕНО] Табы в профиле для разных ролей.

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

Аватар пользователя novichekd novichekd 4 июня 2011 в 14:39

Здраствуйте!
У меня такой вопрос, можно ли при просмотре профиля пользователя для разных ролей создать разные наборы табов?
Например у меня на сайте две роли, заказчик и исполнитель, соответственно хочу заказчику добавить таб проекты, а исполнителю портфолио. Можно ли это реализовать?

Комментарии

Аватар пользователя iNFerNo iNFerNo 4 июня 2011 в 17:05

смотря о каких табов идет речь если через вьюху то можно (не подскажу как но можно, код нужно куда то вставить)

а если в ноду свои табы делаешь то там проверку делаешь на роли и все...

как то так . информации море в инете

Аватар пользователя novichekd novichekd 4 июня 2011 в 17:33

iNFerNo wrote:
смотря о каких табов идет речь если через вьюху то можно (не подскажу как но можно, код нужно куда то вставить)

а если в ноду свои табы делаешь то там проверку делаешь на роли и все...

как то так . информации море в инете

Не очень понял ответ... Есть модуль с кодом

<?php
function mymod_menu() {
  
$items = array();

  

$items['user/%user/projects'] = array(
    
'title' => 'Projects',
    
'page callback' => 'mymod_user_projects',
    
'page arguments' => array(1),
    
'access arguments' => array('access user profiles'),
    
'type' => MENU_LOCAL_TASK,
    
'weight' => 5,
  );
  
$items['user/%user/portfolio'] = array(
    
'title' => 'Portfolio',
    
'page callback' => 'mymod_user_portfolio',
    
'page arguments' => array(1),
    
'access arguments' => array('access user profiles'),
    
'type' => MENU_LOCAL_TASK,
    
'weight' => 5,
  );
 return 
$items;
}
?>

Как вот тут сделать проверку на роль пользователя, чей профиль просматриваем?

Аватар пользователя novichekd novichekd 4 июня 2011 в 20:48

"FORTIS" wrote:
Опубликовано FORTIS в сб, 04/06/2011 - 20:34.

http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hoo...

я сегодня за поиск

Вы меня конечно извените за тугость, но... Задача заключается не в том, чтобы ограничить доступ к просмотру пользователю, который в данный момент просматривает профиль... Задача состоит в том, чтобы на странице пользователя была видна закладка "проекты" только в том случае, если пользователь (чью страницу в данный момент просмартивают) имеет роль заказчика.

Аватар пользователя novichekd novichekd 4 июня 2011 в 21:04

Ну я уже совсем ничего не понимаю... Если у меня есть роль заказчика, то Вы просматривая мой профиль дожны видеть вкладку "проекты", при нажатию на которую можно увидеть все мои проекты. Если возможно, подправьте код приведенный выше, чтобы я понял.

Аватар пользователя FORTIS FORTIS 4 июня 2011 в 21:23

$items['user/%user/portfolio'] = array(
'title' => 'Portfolio',
'page callback' => 'mymod_user_portfolio',
'page arguments' => array(1),
'access callback' => 'your_module_access',
'type' => MENU_LOCAL_TASK,
'weight' => 5,
);

function your_module_access(){
return true если у global $user роль заказчика а у %user роль исполнителя
}

Аватар пользователя novichekd novichekd 4 июня 2011 в 22:08

"FORTIS" wrote:
function your_module_access(){
return true если у global $user роль заказчика а у %user роль исполнителя
}

У меня все равно еще пару вопросов.
Во-первых, как в функцию передать %user? т.е. как мне закрузить $user = user_load(%user), через аргумент arg(1)?
Во-вторых, я написал следующее, и все равно вижу вкладку "Портфолио"

<?php
function your_module_access(){
 
$user user_load(15);    //15 - это пользователь, у которого есть роль заказчик (3)
 
if (array_key_exists(4$user->roles)) { //а тут я проверяю, есть ли у пользователя роль 4, т.е. исполнитель
     
return true;
 } else {
     return 
false;
 }
}
?>
Аватар пользователя novichekd novichekd 5 июня 2011 в 2:46

"FORTIS" wrote:
Опубликовано FORTIS в сб, 04/06/2011 - 21:23.

$items['user/%user/portfolio'] = array(
'title' => 'Portfolio',
'page callback' => 'mymod_user_portfolio',
'page arguments' => array(1),
'access callback' => 'your_module_access',
'type' => MENU_LOCAL_TASK,
'weight' => 5,
);

function your_module_access(){
return true если у global $user роль заказчика а у %user роль исполнителя
}

Вот так и заработало!