mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_users.git
synced 2026-05-03 20:20:42 -03:00
Adiciona página de configuração do microsite em /user/{id}/config
Permite ao usuário selecionar qual conteúdo (content_page toplevel) é exibido na página inicial do microsite. A configuração é armazenada via user.data e a homepage respeita a escolha com fallback para o primeiro nó publicado. O nó configurado como homepage é ocultado automaticamente do menu de navegação (structural_pages). Inclui link "Configuração" no menu da conta via rota de redirecionamento para o usuário atual. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,42 @@ function site_users_microsite_theme(): array {
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 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().
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user