Secondary tabs в профиле пользователя
Написано: вторник, 2 августа 2011 г. автор shumer Ярлыки: Drupal secondary tabs user profile
0
При добавлении итема MENU_LOCAL_TASK в раздел user/%/edit/ пропадали табы когда происходил переход по добавленному табу, за все отвечает функция в модуле user.module
Привожу уже исправленный вариант, по дефолту использовалась закомментированная строка.
Привожу уже исправленный вариант, по дефолту использовалась закомментированная строка.
/** * Return a user object after checking if any profile category in the path exists. */ function user_category_load($uid, &$map, $index) { static $user_categories, $accounts; // Cache $account - this load function will get called for each profile tab. if (!isset($accounts[$uid])) { $accounts[$uid] = user_load($uid); } $valid = TRUE; //if (($account = $accounts[$uid]) && isset($map[$index + 1]) && $map[$index + 1] == 'edit') { if (($account = $accounts[$uid]) && $map[0] == 'user' && $map[1] == $index && $map[2] == 'edit') { // Since the path is like user/%/edit/category_name, the category name will // be at a position 2 beyond the index corresponding to the % wildcard. $category_index = $index + 2; // Valid categories may contain slashes, and hence need to be imploded. $category_path = implode('/', array_slice($map, $category_index)); if ($category_path) { // Check that the requested category exists. $valid = FALSE; if (!isset($user_categories)) { $empty_account = new stdClass(); $user_categories = _user_categories($empty_account); } foreach ($user_categories as $category) { if ($category['name'] == $category_path) { $valid = TRUE; // Truncate the map array in case the category name had slashes. $map = array_slice($map, 0, $category_index); // Assign the imploded category name to the last map element. $map[$category_index] = $category_path; break; } } } } return $valid ? $account : FALSE; }