Files
site_users/modules/site_users_microsite/site_users_microsite.module
Quintino A. G. Souza 9ec7f951bf Adiciona links acadêmicos ao MicrositeHeaderBlock e formatadores de campo
- Formatadores FieldFormatter para Lattes, ORCID e MathSciNet: geram
  link para o perfil na plataforma a partir do ID armazenado no campo
- MicrositeHeaderBlock: inclui lattes_id, orcid_id e mathscinet_id
- Template: exibe ícones SVG via site_tools_academic_icon() (extensão
  Twig do módulo site_tools) com links acessíveis para cada plataforma
- CSS: estilos para .msite-header-block__academic-links com animação
  de hover nos ícones

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 08:52:28 -03:00

65 lines
1.5 KiB
Plaintext

<?php
/**
* @file
* Sub-módulo de micro-site pessoal de usuário.
*/
use Drupal\user\UserInterface;
/**
* Implements hook_theme().
*/
function site_users_microsite_theme(): array {
return [
'microsite_header_block' => [
'variables' => [
'photo_url' => NULL,
'photo_alt' => '',
'name' => NULL,
'bio' => NULL,
'phone' => NULL,
'email' => NULL,
'lattes_id' => NULL,
'orcid_id' => NULL,
'mathscinet_id' => NULL,
],
],
];
}
/**
* 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);
}
}