Add field_redirect_page to site_sections terms and fix root page hierarchy

- Add field_redirect_page to site_sections taxonomy terms, with a custom
  EntityReferenceSelection plugin that filters content_page nodes by section
- Redirect taxonomy term canonical URLs to the configured node (301)
- Fix root page detection in MenuBlock and views to also match nodes whose
  field_parent_page points to a taxonomy_term (not only empty parent)
- Move root taxonomy-term option to the top of the parent-page dropdown
- Add breadcrumb workaround for Gavias notech theme separator rendering
- Add imecc_menu_helper submodule
- Translate config labels and default terms from English to Portuguese

Co-Authored-By: Henrique Bauer <henrique@webcontent.com.br>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-05 07:52:49 -03:00
parent 36c3a2e9c0
commit 276fd028f2
26 changed files with 661 additions and 77 deletions

View File

@@ -0,0 +1,59 @@
langcode: pt-br
status: true
dependencies:
config:
- field.field.taxonomy_term.site_sections.field_redirect_page
- field.field.taxonomy_term.site_sections.layout_builder__layout
- taxonomy.vocabulary.site_sections
module:
- path
- text
id: taxonomy_term.site_sections.default
targetEntityType: taxonomy_term
bundle: site_sections
mode: default
content:
description:
type: text_textfield
weight: 0
region: content
settings:
size: 60
placeholder: ''
third_party_settings: { }
field_redirect_page:
type: options_select
weight: 10
region: content
settings: { }
third_party_settings: { }
langcode:
type: language_select
weight: 2
region: content
settings:
include_locked: true
third_party_settings: { }
name:
type: string_textfield
weight: -5
region: content
settings:
size: 60
placeholder: ''
third_party_settings: { }
path:
type: path
weight: 30
region: content
settings: { }
third_party_settings: { }
status:
type: boolean_checkbox
weight: 100
region: content
settings:
display_label: true
third_party_settings: { }
hidden:
layout_builder__layout: true

View File

@@ -0,0 +1,45 @@
uuid: f6aa2bd0-3f75-4489-b3f9-43429491b548
langcode: pt-br
status: true
dependencies:
config:
- field.field.taxonomy_term.site_sections.layout_builder__layout
- taxonomy.vocabulary.site_sections
module:
- layout_builder
- layout_discovery
third_party_settings:
layout_builder:
enabled: true
allow_custom: true
sections:
-
layout_id: layout_onecol
layout_settings:
label: ''
components:
0663ed2f-1401-4e75-8a69-971333b49bc2:
uuid: 0663ed2f-1401-4e75-8a69-971333b49bc2
region: content
configuration:
id: 'field_block:taxonomy_term:site_sections:description'
label_display: '0'
context_mapping:
entity: layout_builder.entity
formatter:
type: text_default
label: hidden
settings: { }
third_party_settings: { }
weight: 0
additional: { }
third_party_settings: { }
id: taxonomy_term.site_sections.default
targetEntityType: taxonomy_term
bundle: site_sections
mode: default
content: { }
hidden:
description: true
langcode: true
layout_builder__layout: true

View File

@@ -13,7 +13,7 @@ field_name: field_parent_page
entity_type: node
bundle: content_page
label: 'Parent Page'
description: 'Select the parent entity. The site section will be inherited automatically based on the parent type.'
description: 'Selecione a entidade pai. A seção do site será herdada automaticamente com base no tipo de pai.'
required: false
translatable: false
default_value: { }

View File

@@ -11,7 +11,7 @@ id: node.content_page.field_site_section
field_name: field_site_section
entity_type: node
bundle: content_page
label: 'Site Section'
label: 'Seção do Site'
description: 'For root pages, select the section. For child pages, this field is filled automatically.'
required: true
translatable: false

View File

@@ -11,8 +11,8 @@ id: node.section_page.field_site_section
field_name: field_site_section
entity_type: node
bundle: section_page
label: 'Site Section'
description: 'Select the site section this page belongs to.'
label: 'Seção do Site'
description: 'Selecione a seção do site à qual esta página pertence.'
required: true
translatable: false
default_value: { }

View File

@@ -0,0 +1,23 @@
langcode: pt-br
status: true
dependencies:
config:
- field.storage.taxonomy_term.field_redirect_page
- node.type.content_page
- taxonomy.vocabulary.site_sections
id: taxonomy_term.site_sections.field_redirect_page
field_name: field_redirect_page
entity_type: taxonomy_term
bundle: site_sections
label: 'Página de Redirecionamento'
description: ''
required: false
translatable: true
default_value: { }
default_value_callback: ''
settings:
handler: 'default:node_site_section_redirect'
handler_settings:
target_bundles:
content_page: content_page
field_type: entity_reference

View File

@@ -0,0 +1,21 @@
uuid: 726b6570-a8df-4518-8542-28446352fe46
langcode: pt-br
status: true
dependencies:
config:
- field.storage.taxonomy_term.layout_builder__layout
- taxonomy.vocabulary.site_sections
module:
- layout_builder
id: taxonomy_term.site_sections.layout_builder__layout
field_name: layout_builder__layout
entity_type: taxonomy_term
bundle: site_sections
label: Layout
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: layout_section

View File

@@ -0,0 +1,19 @@
langcode: pt-br
status: true
dependencies:
module:
- node
- taxonomy
id: taxonomy_term.field_redirect_page
field_name: field_redirect_page
entity_type: taxonomy_term
type: entity_reference
settings:
target_type: node
module: core
locked: false
cardinality: 1
translatable: true
indexes: { }
persist_with_no_fields: false
custom_storage: false

View File

@@ -0,0 +1,19 @@
uuid: 99f94609-3b7c-490e-80a0-96036b03e9d3
langcode: pt-br
status: true
dependencies:
module:
- layout_builder
- taxonomy
id: taxonomy_term.layout_builder__layout
field_name: layout_builder__layout
entity_type: taxonomy_term
type: layout_section
settings: { }
module: layout_builder
locked: true
cardinality: 1
translatable: false
indexes: { }
persist_with_no_fields: false
custom_storage: false

View File

@@ -7,7 +7,7 @@ third_party_settings:
name: 'Content Page'
type: content_page
description: 'Pages with hierarchical parent-child structure for content organization.'
help: 'For root pages, fill in the Site Section manually. For child pages, select the parent page and the section will be inherited automatically.'
help: 'Para páginas raiz, preencha a Seção do Site manualmente. Para páginas filhas, selecione a página pai e a seção será herdada automaticamente.'
new_revision: true
preview_mode: 1
display_submitted: false

View File

@@ -6,7 +6,7 @@ third_party_settings:
enabled: true
name: 'Section Page'
type: section_page
description: 'Pages organized by site section, with URLs and breadcrumbs based on taxonomy.'
description: 'Páginas organizadas por seção do site, com URLs e breadcrumbs baseados na taxonomia.'
help: ''
new_revision: true
preview_mode: 1

View File

@@ -5,7 +5,7 @@ dependencies:
- structural_pages
- taxonomy
id: site_sections_term
label: 'Site Sections Term'
label: 'Termo de Seções do Site'
type: 'canonical_entities:taxonomy_term'
pattern: '[term:hierarchy-path]'
selection_logic: and

View File

@@ -1,7 +1,7 @@
langcode: en
status: true
dependencies: { }
name: 'Site Sections'
name: 'Seções do Site'
vid: site_sections
description: 'Main hierarchical structure for site organization.'
description: 'Estrutura hierárquica principal para organização do site.'
weight: 0