mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/structural_pages.git
synced 2026-03-09 18:07:42 -03:00
Implement ParentEntityHandler plugin system for extensible entity support
Replace hardcoded entity type checks with a plugin-based architecture using PHP 8 attributes. This allows adding new parent entity types without modifying core module files. Changes: - Add ParentEntityHandler attribute, interface, base class, and manager - Create built-in handlers for taxonomy_term, user, and node entities - Move Group support to site_structure_group submodule (fixes class not found error when Group module is not installed) - Refactor SiteStructureSettingsForm to use handler manager - Refactor SiteStructureMenuBlock to use handler manager - Refactor SectionBreadcrumbBuilder to use handler manager - Update site_structure.module to use handler manager for clearsSiteSection - Update documentation and translations Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -51,9 +51,11 @@ function site_structure_entity_presave(EntityInterface $entity): void {
|
||||
}
|
||||
|
||||
// Handle site section based on parent type.
|
||||
// For user and group, we don't set field_site_section - the context is the entity itself.
|
||||
if (in_array($parent_entity_type, ['user', 'group'])) {
|
||||
// Clear field_site_section as the context is the user/group, not a site section.
|
||||
// Some entity types (like user and group) act as context containers themselves.
|
||||
/** @var \Drupal\site_structure\ParentEntityHandler\ParentEntityHandlerManagerInterface $handler_manager */
|
||||
$handler_manager = \Drupal::service('plugin.manager.parent_entity_handler');
|
||||
if ($handler_manager->clearsSiteSection($parent_entity_type)) {
|
||||
// Clear field_site_section as the context is the parent entity, not a site section.
|
||||
$entity->set('field_site_section', NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user