[ 'variables' => [ 'photo_url' => NULL, 'photo_alt' => '', 'name' => NULL, 'bio' => NULL, 'phone' => NULL, 'email' => NULL, 'homepage' => NULL, 'lattes_id' => NULL, 'orcid_id' => NULL, 'mathscinet_id' => NULL, ], ], ]; } /** * Implements hook_preprocess_structural_pages_menu(). * * Remove da árvore de navegação o nó configurado como homepage do microsite, * já que esse conteúdo é exibido diretamente em /user/{id}. */ function site_users_microsite_preprocess_structural_pages_menu(array &$variables): void { $user = site_users_get_microsite_user(); if ($user === NULL) { return; } $homepage_nid = \Drupal::service('user.data') ->get('site_users_microsite', $user->id(), 'homepage_nid'); if (!$homepage_nid) { return; } _site_users_microsite_remove_homepage_from_tree($variables['tree'], (int) $homepage_nid); } /** * Remove recursivamente o nó homepage da árvore do structural_pages_menu. */ function _site_users_microsite_remove_homepage_from_tree(array &$items, int $homepage_nid): void { foreach ($items as $key => $item) { if ((int) ($item['id'] ?? 0) === $homepage_nid) { unset($items[$key]); continue; } if (!empty($item['children'])) { _site_users_microsite_remove_homepage_from_tree($items[$key]['children'], $homepage_nid); } } } /** * Implements hook_preprocess_page(). * * Disponibiliza variáveis do usuário do micro-site para o tema. */ function site_users_microsite_preprocess_page(array &$variables): void { $route_match = \Drupal::routeMatch(); $route_name = $route_match->getRouteName(); $is_microsite = $route_name === 'entity.user.canonical' || str_starts_with($route_name, 'site_users_microsite.'); if (!$is_microsite) { return; } $user = $route_match->getParameter('user'); if (!($user instanceof UserInterface)) { return; } $variables['microsite_user'] = $user; $variables['microsite_user_name'] = $user->getDisplayName(); $variables['microsite_user_roles'] = $user->getRoles(TRUE); $photo = site_users_get_default_photo($user); if ($photo) { $render = \Drupal::entityTypeManager() ->getViewBuilder('media') ->view($photo, 'thumbnail'); $variables['microsite_user_photo'] = \Drupal::service('renderer') ->renderInIsolation($render); } }