Estende tema do microsite para todas as rotas /user/{id}/...

O negociador de tema passa a verificar o alias do caminho atual em vez
de checar nomes de rota específicos, cobrindo páginas de qualquer módulo
acessadas via alias /user/{id}/.... Adiciona site_users_get_microsite_user()
como helper reutilizável para obter o usuário do microsite a partir da rota
ou do alias, e atualiza MicrositeHeaderBlock e site_tools_share_links para
usá-lo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-21 09:17:51 -03:00
parent c96268e09d
commit f4d6c49312
3 changed files with 42 additions and 4 deletions

View File

@@ -530,11 +530,35 @@ function site_users_user_format_name_alter(&$name, $account) {
}
}
/**
* Retorna o usuário dono do microsite para a requisição atual.
*
* Tenta o parâmetro 'user' da rota (rotas próprias do microsite) e, se não
* encontrar, extrai o ID do alias do caminho atual (ex: /user/229/projetos).
*/
function site_users_get_microsite_user(): ?UserInterface {
$user = \Drupal::routeMatch()->getParameter('user');
if ($user instanceof UserInterface) {
return $user;
}
if (is_numeric($user)) {
return \Drupal::entityTypeManager()->getStorage('user')->load($user);
}
$alias = \Drupal::service('path_alias.manager')
->getAliasByPath(\Drupal::service('path.current')->getPath());
if (preg_match('#^/user/(\d+)(/|$)#', $alias, $matches)) {
return \Drupal::entityTypeManager()->getStorage('user')->load($matches[1]);
}
return NULL;
}
/**
* Implements hook_site_tools_share_links().
*/
function site_users_site_tools_share_links(): array {
$user = \Drupal::routeMatch()->getParameter('user');
$user = site_users_get_microsite_user();
if (!($user instanceof UserInterface)) {
return [];