65 lines
2.3 KiB
ReStructuredText
65 lines
2.3 KiB
ReStructuredText
.. include:: /Includes.rst.txt
|
|
|
|
.. _feature-108726-1769073579:
|
|
|
|
=================================================================================================
|
|
Feature: #108726 - Add PSR-14 events ModifyRenderedContentAreaEvent and ModifyRenderedRecordEvent
|
|
=================================================================================================
|
|
|
|
See :issue:`108726`
|
|
|
|
Description
|
|
===========
|
|
|
|
The :php:`\TYPO3\CMS\Fluid\Event\ModifyRenderedRecordEvent` allows developers to
|
|
intercept the rendering of individual records in Fluid templates and modify the output.
|
|
This depends on records being rendered with the new :html:`<f:render.contentArea>`, see
|
|
:ref:`Introduce Fluid f:render.contentArea ViewHelper <feature-108726-1769071158>`, or
|
|
:html:`<f:render.record>` ViewHelpers in Fluid templates, see
|
|
:ref:`Introduce Fluid f:render.record ViewHelper <feature-108726-1769503907>`.
|
|
|
|
Note that any alterations will be output as is and will not be escaped. If you
|
|
process insecure content inside an event listener, be sure to escape it properly,
|
|
for example by applying :php:`htmlspecialchars()` to it.
|
|
|
|
Example
|
|
=======
|
|
|
|
An example event listener could look like this:
|
|
|
|
.. code-block:: php
|
|
:caption: EXT:my_extension/Classes/EventListener/ModifyRenderedContentEventListener.php
|
|
|
|
namespace MyVendor\MyExtension\EventListener;
|
|
|
|
use TYPO3\CMS\Core\Attribute\AsEventListener;
|
|
use TYPO3\CMS\Fluid\Event\ModifyRenderedContentAreaEvent;
|
|
use TYPO3\CMS\Fluid\Event\ModifyRenderedRecordEvent;
|
|
|
|
final class ModifyRenderedContentEventListener
|
|
{
|
|
#[AsEventListener]
|
|
public function modifyContentArea(ModifyRenderedContentAreaEvent $event): void
|
|
{
|
|
$content = 'before area<hr />' . $event->getRenderedContentArea()
|
|
. '<hr />after area';
|
|
$event->setRenderedContentArea($content);
|
|
}
|
|
|
|
#[AsEventListener]
|
|
public function modifyRecord(ModifyRenderedRecordEvent $event): void
|
|
{
|
|
$content = 'before record<hr />' . $event->getRenderedRecord()
|
|
. '<hr />after record';
|
|
$event->setRenderedRecord($content);
|
|
}
|
|
}
|
|
|
|
Impact
|
|
======
|
|
|
|
The new events can be used by extension authors to enhance the output of
|
|
content areas and records rendered in themes.
|
|
|
|
.. index:: Frontend, ext:fluid
|