Zugriff auf die Seiteneigenschaften in einem Mask-Element

Wenn in einem TYPO3 Datensatz, der mit der Extension Mask erstellt wurde,  Inhalte aus den Seiteneigenschaften benötigt werden, so geht das mit dem TYPO3 „DatabaseQueryProcessor“.

Der Anwendungsfall sieht so aus:
im Maskelement werden Inhalte (Bild und Titel) angezeigt, die bereits in den Seiteneigenschaften für ein Menü der Unterseiten vorhanden sind. Genau genommen, soll es der Redakteurin frei stehen, die Inhalte aus den Seiteneigenschaften zu verwenden oder andere selbst einzugeben. Um im Maskelement überhaupt auf die Seiteneigenschaften zugreifen zu können, benötigt man folgendes Typoscript:

tt_content {
    mask_mymaskelement {
        dataProcessing.10 = database-query
        dataProcessing.10 {
        	table = pages
            pidInList = 0
            recursive = 99
            uidInList = this
            as = pageproperties
            dataProcessing {
                10 = files
                10 {
                    references.fieldName = media
                }
            }
        }
    }
}

Man beachte, dass in Zeile 2 der Name des Maskelements angegeben werden muss.
In Zeile 3 muss, sofern nicht TYPO3 12 verwendet wird, folgendes stehen:

# Before TYPO3 v12.1 you have to specify the fully-qualified class name of the processor
dataProcessing.10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
# Since TYPO3 v12.1 one can also use the available alias

Wird kein Zugriff auf  Seiteneigenschaften / Ressourcen benötigt, kann Zeile 10 – 15 weggelassen werden.
Und im Template des Maskelements kann man das dann folgendermaßen auslesen:

{pageproperties.0.data.fieldname}

Das Template „Mymaskelement.html“ könnte also etwa so aussehen:

<f:if condition="{data.tx_mask_image}">
    <f:then>
        <f:for each="{data.tx_mask_image}" as="file">
            <f:media file="{file}" width="200" />
        </f:for>
    </f:then>
    <f:else>
        <f:media file="{pageproperties.0.files.0}" width="200" />
    </f:else>
</f:if>
<f:if condition="{data.tx_mask_title}">
    <f:then>
    	{data.tx_mask_title}
    </f:then>
    <f:else>
    	{pageproperties.0.data.title}
    </f:else>
</f:if>

 

Links:

https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/Fluidtemplate/DataProcessing/DatabaseQueryProcessor.html
https://github.com/Gernott/mask/blob/main/Documentation/Guides/DataProcessors.rst
https://stackoverflow.com/questions/44190848/access-page-properties-within-fluid-styled-content-element