mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_users.git
synced 2026-05-03 17:00:40 -03:00
Adiciona sub-módulo site_users_blog e melhora negociador de tema
Sub-módulo site_users_blog:
- Tipo de conteúdo blog_post (título, corpo, imagem, assuntos)
- Vocabulário blog_tags para categorias
- Listagem em /user/{uid}/blog via Views com filtro contextual por autor
- Padrão Pathauto: user/[node:author:uid]/blog/[node:title]
- hook_node_presave: preenche field_site_section com o autor
- hook_node_access: restringe criação às roles configuradas
- hook_preprocess_structural_pages_menu: injeta item "Blog" quando
usuário tem posts publicados
- Plugin BlogUserHandler: resolve usuário ancestral para rotas de blog
(post individual e listagem Views)
- Link "Post de blog" no menu "Adicionar" da conta
- Página de configuração de roles permitidas
- Update 10001: adiciona field_site_section a posts existentes
MicrositeThemeNegotiator:
- Injeta path.current para cobrir rotas sem parâmetro 'user' (ex.: Views)
- Qualquer path /user/{uid}/... recebe o tema do microsite
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@ services:
|
||||
|
||||
site_users_microsite.theme_negotiator:
|
||||
class: Drupal\site_users_microsite\Theme\MicrositeThemeNegotiator
|
||||
arguments: ['@path_alias.manager']
|
||||
arguments: ['@path_alias.manager', '@path.current']
|
||||
tags:
|
||||
- { name: theme_negotiator, priority: 100 }
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Drupal\site_users_microsite\Theme;
|
||||
|
||||
use Drupal\Core\Path\CurrentPathStack;
|
||||
use Drupal\Core\Routing\RouteMatchInterface;
|
||||
use Drupal\Core\Theme\ThemeNegotiatorInterface;
|
||||
use Drupal\path_alias\AliasManagerInterface;
|
||||
@@ -14,6 +15,7 @@ class MicrositeThemeNegotiator implements ThemeNegotiatorInterface {
|
||||
|
||||
public function __construct(
|
||||
private AliasManagerInterface $aliasManager,
|
||||
private CurrentPathStack $currentPath,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -55,7 +57,7 @@ class MicrositeThemeNegotiator implements ThemeNegotiatorInterface {
|
||||
}
|
||||
}
|
||||
|
||||
// Nós cujo alias começa com /user/{uid}/ (ex.: structural_pages).
|
||||
// Nós cujo alias começa com /user/{uid}/ (ex.: structural_pages, blog).
|
||||
if ($route_name === 'entity.node.canonical') {
|
||||
$node = $route_match->getParameter('node');
|
||||
if ($node) {
|
||||
@@ -67,6 +69,12 @@ class MicrositeThemeNegotiator implements ThemeNegotiatorInterface {
|
||||
}
|
||||
}
|
||||
|
||||
// Qualquer rota cujo path atual (já processado) seja /user/{uid}/...
|
||||
// Cobre Views e outras rotas que não expõem parâmetro 'user' na rota.
|
||||
if (preg_match('#^/user/\d+/#', $this->currentPath->getPath())) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user