Deprecation: #109529 - Page module section markup events 

See forge#109529

Description 

The PSR-14 events that allow listeners to inject HTML before or after the content elements rendered inside a backend layout column have been deprecated and will be removed in TYPO3 v15.0:

  • \TYPO3\CMS\Backend\View\Event\BeforeSectionMarkupGeneratedEvent
  • \TYPO3\CMS\Backend\View\Event\AfterSectionMarkupGeneratedEvent
  • \TYPO3\CMS\Backend\View\Event\AbstractSectionMarkupGeneratedEvent

The accompanying methods GridColumn::getBeforeSectionMarkup() and GridColumn::getAfterSectionMarkup() have likewise been deprecated.

These events were introduced in TYPO3 v10.3 alongside the legacy PageLayoutView class to enrich backend layout columns with custom markup. They expose raw HTML strings as a column-level extension point and force every refactoring of the page module to keep emitting that markup at exactly the same position in the DOM. This makes it impossible to keep them stable across versions while improving the page module: ongoing work to rebuild the page module and its drag, drop and paste behavior cannot proceed without locking the column's internal structure to whatever the events happened to assume. Removing the events is a prerequisite for that work.

The only listener that still consumed the event in the core, PageLayoutViewDrawEmptyColposContent, has been removed. Its job — showing a placeholder block for backend layout cells that have no colPos configured — is now performed directly in the Fluid template PageLayout/Grid/Column.fluid.html via an {column.unassigned} condition. No extension action is required for this case.

Impact 

Calling AbstractSectionMarkupGeneratedEvent::setContent() from a listener will trigger a deprecation-level log entry. The classes and the two GridColumn getters will be removed in TYPO3 v15.0.

Existing listeners will keep functioning in TYPO3 v14: the dispatch sites in GridColumn still fire the events and the Fluid partials still render the resulting {column.beforeSectionMarkup} and {column.afterSectionMarkup} strings.

Affected installations 

Instances or extensions that register a PSR-14 listener on BeforeSectionMarkupGeneratedEvent or AfterSectionMarkupGeneratedEvent, or that call GridColumn::getBeforeSectionMarkup() / GridColumn::getAfterSectionMarkup() directly, are affected.

Migration 

There is no direct replacement. Listeners that decorated backend layout columns through these events should be removed.