Adiciona field_menu_title e field_weight ao content_page

field_menu_title (string, 128 chars):
- Título alternativo para exibição no menu de navegação
- Quando preenchido, substitui o título da página no menu
- Útil para abreviar títulos longos

field_weight (integer, padrão 0):
- Controla a ordenação de páginas com o mesmo pai
- Valores menores aparecem primeiro; empate resolvido por título

StructuralPagesMenuBlock:
- Ordenação: field_weight ASC, título ASC (antes: só título)
- Título no menu: field_menu_title se preenchido, senão label()

Update 10014: cria os campos e atualiza o form display em
instalações existentes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-24 07:45:04 -03:00
parent 7688692b85
commit 072e64b771
7 changed files with 173 additions and 1 deletions

View File

@@ -845,3 +845,81 @@ function structural_pages_requirements(string $phase): array {
return $requirements;
}
/**
* Adiciona field_menu_title e field_weight ao tipo content_page.
*/
function structural_pages_update_10014(): string {
$etm = \Drupal::entityTypeManager();
// --- field_menu_title ---
if (!\Drupal\field\Entity\FieldStorageConfig::loadByName('node', 'field_menu_title')) {
\Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_menu_title',
'entity_type' => 'node',
'type' => 'string',
'settings' => ['max_length' => 128],
'cardinality' => 1,
'translatable' => TRUE,
])->save();
}
if (!\Drupal\field\Entity\FieldConfig::loadByName('node', 'content_page', 'field_menu_title')) {
\Drupal\field\Entity\FieldConfig::create([
'field_name' => 'field_menu_title',
'entity_type' => 'node',
'bundle' => 'content_page',
'label' => 'Título no menu',
'description' => 'Título abreviado para o menu de navegação. Se vazio, usa o título da página.',
'required' => FALSE,
'translatable' => TRUE,
])->save();
}
// --- field_weight ---
if (!\Drupal\field\Entity\FieldStorageConfig::loadByName('node', 'field_weight')) {
\Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_weight',
'entity_type' => 'node',
'type' => 'integer',
'cardinality' => 1,
'translatable' => FALSE,
])->save();
}
if (!\Drupal\field\Entity\FieldConfig::loadByName('node', 'content_page', 'field_weight')) {
\Drupal\field\Entity\FieldConfig::create([
'field_name' => 'field_weight',
'entity_type' => 'node',
'bundle' => 'content_page',
'label' => 'Peso (ordenação)',
'description' => 'Valores menores aparecem primeiro entre páginas com o mesmo pai. Padrão: 0.',
'required' => FALSE,
'translatable' => FALSE,
'default_value' => [['value' => 0]],
])->save();
}
// Adiciona os campos ao form display padrão.
$form_display = $etm->getStorage('entity_form_display')
->load('node.content_page.default');
if ($form_display) {
if (!$form_display->getComponent('field_menu_title')) {
$form_display->setComponent('field_menu_title', [
'type' => 'string_textfield',
'weight' => 1,
'region' => 'content',
'settings' => ['size' => 60, 'placeholder' => ''],
]);
}
if (!$form_display->getComponent('field_weight')) {
$form_display->setComponent('field_weight', [
'type' => 'number',
'weight' => 27,
'region' => 'content',
'settings' => ['placeholder' => '0'],
]);
}
$form_display->save();
}
return 'Campos field_menu_title e field_weight adicionados ao content_page.';
}