From 7b747e4eb25076aa26717b6817c901db58136d46 Mon Sep 17 00:00:00 2001 From: "Quintino A. G. Souza" Date: Sun, 22 Mar 2026 08:32:37 -0300 Subject: [PATCH] =?UTF-8?q?Permite=20usar=20t=C3=ADtulo=20do=20n=C3=B3=20h?= =?UTF-8?q?omepage=20como=20t=C3=ADtulo=20da=20p=C3=A1gina=20do=20microsit?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adiciona checkbox 'use_homepage_title' ao formulário de configuração do microsite. Quando ativado, o hook_preprocess_block substitui o título do bloco 'Título da Página' pelo título do nó configurado como homepage. Sem nó configurado ou no caso de fallback, mantém o nome do usuário. Co-Authored-By: Claude Sonnet 4.6 --- .../site_users_microsite.module | 44 +++++++++++++++++++ .../src/Form/MicrositeUserConfigForm.php | 15 +++++++ 2 files changed, 59 insertions(+) diff --git a/modules/site_users_microsite/site_users_microsite.module b/modules/site_users_microsite/site_users_microsite.module index 2a551e1..6698f8d 100644 --- a/modules/site_users_microsite/site_users_microsite.module +++ b/modules/site_users_microsite/site_users_microsite.module @@ -65,6 +65,50 @@ function _site_users_microsite_remove_homepage_from_tree(array &$items, int $hom } } +/** + * Implements hook_preprocess_block(). + * + * Substitui o título do bloco "Título da Página" pelo título do nó homepage + * quando o usuário tiver ativado essa opção nas configurações do microsite. + * Sem nó homepage configurado (ou no fallback), mantém o comportamento padrão. + */ +function site_users_microsite_preprocess_block(&$variables): void { + if ($variables['plugin_id'] !== 'page_title_block') { + return; + } + + $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; + } + + $userData = \Drupal::service('user.data'); + + if (!$userData->get('site_users_microsite', $user->id(), 'use_homepage_title')) { + return; + } + + $homepage_nid = $userData->get('site_users_microsite', $user->id(), 'homepage_nid'); + if (!$homepage_nid) { + return; + } + + $node = \Drupal::entityTypeManager()->getStorage('node')->load($homepage_nid); + if ($node && $node->isPublished() && $node->access('view')) { + $variables['content']['#title'] = $node->label(); + } +} + /** * Implements hook_preprocess_page(). * diff --git a/modules/site_users_microsite/src/Form/MicrositeUserConfigForm.php b/modules/site_users_microsite/src/Form/MicrositeUserConfigForm.php index fe63b19..896e66c 100644 --- a/modules/site_users_microsite/src/Form/MicrositeUserConfigForm.php +++ b/modules/site_users_microsite/src/Form/MicrositeUserConfigForm.php @@ -45,6 +45,7 @@ class MicrositeUserConfigForm extends FormBase { $form_state->set('user', $user); $homepage_nid = $this->userData->get('site_users_microsite', $user->id(), 'homepage_nid'); + $use_homepage_title = $this->userData->get('site_users_microsite', $user->id(), 'use_homepage_title'); $nids = $this->entityTypeManager->getStorage('node') ->getQuery() @@ -75,6 +76,13 @@ class MicrositeUserConfigForm extends FormBase { '#default_value' => $homepage_nid ?? '', ]; + $form['use_homepage_title'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Use homepage content title as page title'), + '#description' => $this->t('When checked, the title of the selected homepage content replaces the default page title (your display name).'), + '#default_value' => $use_homepage_title ?? FALSE, + ]; + $form['actions'] = ['#type' => 'actions']; $form['actions']['submit'] = [ '#type' => 'submit', @@ -98,6 +106,13 @@ class MicrositeUserConfigForm extends FormBase { $this->userData->set('site_users_microsite', $user->id(), 'homepage_nid', (int) $nid); } + if ($form_state->getValue('use_homepage_title')) { + $this->userData->set('site_users_microsite', $user->id(), 'use_homepage_title', TRUE); + } + else { + $this->userData->delete('site_users_microsite', $user->id(), 'use_homepage_title'); + } + Cache::invalidateTags(['site_users_microsite_config:' . $user->id()]); $this->messenger()->addStatus($this->t('Configuration saved.')); }