<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/index.php?action=history&amp;feed=atom&amp;title=TYPO3_-_Navigation_mit_DataProcessing</id>
	<title>TYPO3 - Navigation mit DataProcessing - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/index.php?action=history&amp;feed=atom&amp;title=TYPO3_-_Navigation_mit_DataProcessing"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=TYPO3_-_Navigation_mit_DataProcessing&amp;action=history"/>
	<updated>2026-05-06T20:24:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikizone</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=TYPO3_-_Navigation_mit_DataProcessing&amp;diff=23904&amp;oldid=prev</id>
		<title>37.49.72.8: Die Seite wurde neu angelegt: „ https://www.thomaskieslich.de/blog/132-typo3-8-menues-mit-fluid-und-menuprocessor-erstellen/  TODO  MenuProcessor Der MenuProcessor ist einer der neuen DataPr…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=TYPO3_-_Navigation_mit_DataProcessing&amp;diff=23904&amp;oldid=prev"/>
		<updated>2019-06-05T09:45:27Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „ https://www.thomaskieslich.de/blog/132-typo3-8-menues-mit-fluid-und-menuprocessor-erstellen/  TODO  MenuProcessor Der MenuProcessor ist einer der neuen DataPr…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt; https://www.thomaskieslich.de/blog/132-typo3-8-menues-mit-fluid-und-menuprocessor-erstellen/&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
MenuProcessor&lt;br /&gt;
Der MenuProcessor ist einer der neuen DataProcessoren und gibt ein gut auswertbares Menü Array and das Fluid Template weiter. Der Inhalte des Arrays ist über umfangreiche Optionen gut zu beeinflussen. Die meisten Einstellungen sind identisch zum TypoScript HMENU Objekt.&lt;br /&gt;
&lt;br /&gt;
Erlaubte Settings vom HMENU:&lt;br /&gt;
cache_period, entryLevel, special, minItems, maxItems, begin, alternativeSortingField, excludeUidList, excludeDoktypes, includeNotInMenu, alwaysActivePIDlist, protectLvar, addQueryString, if, levels, expandAll, titleField&lt;br /&gt;
&lt;br /&gt;
Prozessor spezifisch sind:&lt;br /&gt;
as, includeSpacer, dataProcessing&lt;br /&gt;
&lt;br /&gt;
Ein paar Defaults gibt es auch:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
levels = 1&lt;br /&gt;
expandAll = 1&lt;br /&gt;
includeSpacer = 0&lt;br /&gt;
as = menu&lt;br /&gt;
titleField = nav_title // title&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Menu Item Array&lt;br /&gt;
Der Menü Prozessor gibt für jede Seite im Menü ein Array mit folgenden Elementen zurück. Abhängig vom Menü Typ können diese unterschiedlich sein. Standard ist:&lt;br /&gt;
&lt;br /&gt;
data = array mit allen Eigenschaften der Seite (Page Object)&lt;br /&gt;
title = Titel oder Navigationstitel der Seite&lt;br /&gt;
link = Link zur Seite&lt;br /&gt;
target = Linkziel&lt;br /&gt;
active = True wenn die Seite im aktiven Menü Zweig ist&lt;br /&gt;
current = True wenn es die aktive Seite ist&lt;br /&gt;
spacer = True wenn die Seite ein Menü Trenner ist&lt;br /&gt;
children = array der Unterseite wenn welche vorhanden sind&lt;br /&gt;
&lt;br /&gt;
TypoScript Settings&lt;br /&gt;
Die Menü Objekte werden im page Objekt unter dataProcessing erstellt. Ein Beispiel aus dem Feature: #78672.&lt;br /&gt;
&lt;br /&gt;
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor&lt;br /&gt;
10 {&lt;br /&gt;
   special = list&lt;br /&gt;
   special.value.field = pages&lt;br /&gt;
   levels = 7&lt;br /&gt;
   as = menu&lt;br /&gt;
   expandAll = 1&lt;br /&gt;
   includeSpacer = 1&lt;br /&gt;
   titleField = nav_title // title&lt;br /&gt;
   dataProcessing {&lt;br /&gt;
      10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor&lt;br /&gt;
      10 {&lt;br /&gt;
         references.fieldName = media&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}Copy&lt;br /&gt;
Die Spezialität dieses Skripts ist es das die Dateien aus dem Ressourcen/Media Feld der Seite mit übergeben werden und im Template verwendet werden können.&lt;br /&gt;
Eingebunden wird das ganze normalerweise im Fluidtemplate unter page.10.dataProcessing.&lt;br /&gt;
&lt;br /&gt;
Screenshot der Menüs&lt;br /&gt;
Screenshot der Menüs&lt;br /&gt;
Hauptmenü mit Dropdown&lt;br /&gt;
Das Menü besteht aus dem TypoScript für die Bereitstellung der Daten und dem Template. Die Klassen für das Menü sind für das Styling mit Zurb Foundation 6 benannt, können aber einfach an andere CSS Frameworks angepasst werden.&lt;br /&gt;
&lt;br /&gt;
TypoScript einfach:&lt;br /&gt;
&lt;br /&gt;
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor&lt;br /&gt;
10 {&lt;br /&gt;
  levels = 6&lt;br /&gt;
  as = menuMain&lt;br /&gt;
}Copy&lt;br /&gt;
TypoScript mit Startverzeichnis und Trenner:&lt;br /&gt;
&lt;br /&gt;
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor&lt;br /&gt;
10 {&lt;br /&gt;
  special = directory&lt;br /&gt;
  special.value = 1&lt;br /&gt;
  levels = 6&lt;br /&gt;
  includeSpacer = 1&lt;br /&gt;
  as = menuMain&lt;br /&gt;
}Copy&lt;br /&gt;
Die Templates liegen bei mir im Partials Ordner unter Navigation. Um sie übersichtlich zu halten, gibt es extra Templates für den einzelnen Menü Eintrag und den Link.&lt;br /&gt;
&lt;br /&gt;
Struktur der Partials&lt;br /&gt;
Template erste Ebene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:if condition=&amp;quot;{menuMain}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ul class=&amp;quot;vertical medium-horizontal menu&amp;quot; data-responsive-menu=&amp;quot;accordion medium-dropdown&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;f:for each=&amp;quot;{menuMain}&amp;quot; as=&amp;quot;mainItem&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;f:render partial=&amp;quot;Navigation/Elements/Item&amp;quot; arguments=&amp;quot;{item: mainItem}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;f:if condition=&amp;quot;{mainItem.children}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;f:render section=&amp;quot;submenu&amp;quot; arguments=&amp;quot;{submenu: mainItem.children}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/f:if&amp;gt;&lt;br /&gt;
			&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;/f:for&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/f:if&amp;gt;Copy&lt;br /&gt;
Wenn der Menü Eintrag Unterseiten (ifSub) enthält wird die submenu Section gerendert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:section name=&amp;quot;submenu&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ul class=&amp;quot;vertical menu&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;f:for each=&amp;quot;{submenu}&amp;quot; as=&amp;quot;subItem&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;f:render partial=&amp;quot;Navigation/Elements/Item&amp;quot; arguments=&amp;quot;{item: subItem}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;f:if condition=&amp;quot;{subItem.children}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;f:render section=&amp;quot;submenu&amp;quot; arguments=&amp;quot;{submenu: subItem.children}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/f:if&amp;gt;&lt;br /&gt;
			&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;/f:for&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/f:section&amp;gt;Copy&lt;br /&gt;
Im Item Partial wird berücksichtigt, ob für das Menü Element die Eigenschaften active, current oder spacer gesetzt sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:if condition=&amp;quot;{item.spacer} || {item.current}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;f:then&amp;gt;&lt;br /&gt;
		&amp;lt;li class=&amp;quot;{f:if(condition:item.current, then:&amp;#039; current&amp;#039;)}{f:if(condition:item.spacer, then:&amp;#039; spacer&amp;#039;)}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;span&amp;gt;{item.title}&amp;lt;/span&amp;gt;&lt;br /&gt;
	&amp;lt;/f:then&amp;gt;&lt;br /&gt;
	&amp;lt;f:else if=&amp;quot;{item.active}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;li class=&amp;quot;{f:if(condition:item.active, then:&amp;#039; active&amp;#039;)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;f:render partial=&amp;quot;Navigation/Elements/Link&amp;quot; arguments=&amp;quot;{item: item}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/f:else&amp;gt;&lt;br /&gt;
	&amp;lt;f:else&amp;gt;&lt;br /&gt;
		&amp;lt;li&amp;gt;&lt;br /&gt;
			&amp;lt;f:render partial=&amp;quot;Navigation/Elements/Link&amp;quot; arguments=&amp;quot;{item: item}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/f:else&amp;gt;&lt;br /&gt;
&amp;lt;/f:if&amp;gt;Copy&lt;br /&gt;
Im Partial für den Link werden die verschiedenen Möglichkeiten für das Link Ziel berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:if condition=&amp;quot;{item.data.target}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;f:then&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;{item.link}&amp;quot; target=&amp;quot;{item.data.target}&amp;quot; title=&amp;quot;{item.data.title}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;/f:then&amp;gt;&lt;br /&gt;
	&amp;lt;f:else if=&amp;quot;{item.target}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;{item.link}&amp;quot; target=&amp;quot;{item.target}&amp;quot; title=&amp;quot;{item.data.title}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;/f:else&amp;gt;&lt;br /&gt;
	&amp;lt;f:else&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;{item.link}&amp;quot; title=&amp;quot;{item.data.title}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;/f:else&amp;gt;&lt;br /&gt;
&amp;lt;/f:if&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;{item.title}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;Copy&lt;br /&gt;
Meta Menü&lt;br /&gt;
Diese Menü wird häufig für Dinge wie Kontakt und Impressum verwendet. Die Page IDs für das Listen Menü kommen aus den Konstanten im Root.&lt;br /&gt;
&lt;br /&gt;
20 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor&lt;br /&gt;
20 {&lt;br /&gt;
  special = list&lt;br /&gt;
  special.value = {$template.pidMeta}&lt;br /&gt;
  levels = 1&lt;br /&gt;
  as = menuMeta&lt;br /&gt;
}Copy&lt;br /&gt;
Das Template ist sehr übersichtlich da die Partials für Item und Link wieder verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:if condition=&amp;quot;{menuMeta}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ul class=&amp;quot;menu-meta menu&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;f:for each=&amp;quot;{menuMeta}&amp;quot; as=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;f:render partial=&amp;quot;Navigation/Elements/Item&amp;quot; arguments=&amp;quot;{item: item}&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/f:for&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/f:if&amp;gt;Copy&lt;br /&gt;
Sub Menü&lt;br /&gt;
In diesem Fall gibt es die Unterseiten der jeweiligen Hauptkategorie aus. Mit entryLevel = -1 nur die Unterseiten der aktuellen Seite. Das Template ist mit dem Haupt Menü nahezu identisch, nur das TypoScript ist anders.&lt;br /&gt;
&lt;br /&gt;
TypoScript&lt;br /&gt;
&lt;br /&gt;
30 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor&lt;br /&gt;
30 {&lt;br /&gt;
  levels = 4&lt;br /&gt;
  entryLevel = 1&lt;br /&gt;
  expandAll = 0&lt;br /&gt;
  includeSpacer = 1&lt;br /&gt;
  as = menuSub&lt;br /&gt;
}Copy&lt;br /&gt;
Template&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:if condition=&amp;quot;{menuSub}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ul class=&amp;quot;vertical menu menu-sub&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;f:for each=&amp;quot;{menuSub}&amp;quot; as=&amp;quot;mainItem&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;f:render partial=&amp;quot;Navigation/Elements/Item&amp;quot; arguments=&amp;quot;{item: mainItem}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;f:if condition=&amp;quot;{mainItem.children}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;f:render section=&amp;quot;submenu&amp;quot; arguments=&amp;quot;{submenu: mainItem.children}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/f:if&amp;gt;&lt;br /&gt;
			&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;/f:for&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/f:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:section name=&amp;quot;submenu&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ul class=&amp;quot;nested vertical menu&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;f:for each=&amp;quot;{submenu}&amp;quot; as=&amp;quot;subItem&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;f:render partial=&amp;quot;Navigation/Elements/Item&amp;quot; arguments=&amp;quot;{item: subItem}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;f:if condition=&amp;quot;{subItem.children}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;f:render section=&amp;quot;submenu&amp;quot; arguments=&amp;quot;{submenu: subItem.children}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/f:if&amp;gt;&lt;br /&gt;
			&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;/f:for&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/f:section&amp;gt;Copy&lt;br /&gt;
Sprach Menü&lt;br /&gt;
Wenn das Menü vom Typ language ist, werden pro Eintrag zusätzlich die Eigenschaften available und languageUid ausgegeben. Wenn available gesetzt ist gibt es die aktuelle Seite in der gewünschten Sprache.&lt;br /&gt;
&lt;br /&gt;
TypoScript&lt;br /&gt;
&lt;br /&gt;
40 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor&lt;br /&gt;
40 {&lt;br /&gt;
  special = language&lt;br /&gt;
  special.value = {$template.languages}&lt;br /&gt;
  as = menuLanguage&lt;br /&gt;
}Copy&lt;br /&gt;
Das Template ist etwas umfangreicher und sollte für die verwendeten Sprachen angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:if condition=&amp;quot;{menuLanguage}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ul id=&amp;quot;language_menu&amp;quot; class=&amp;quot;menu-language&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;f:for each=&amp;quot;{menuLanguage}&amp;quot; as=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;li class=&amp;quot;{f:if(condition: item.active, then: &amp;#039;active&amp;#039;)} {f:if(condition: item.available, else: &amp;#039;text-muted&amp;#039;)}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;f:switch expression=&amp;quot;{item.languageUid}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;f:case value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;f:variable name=&amp;quot;languageTitle&amp;quot;&amp;gt;En&amp;lt;/f:variable&amp;gt;&lt;br /&gt;
						&amp;lt;f:variable name=&amp;quot;hreflang&amp;quot;&amp;gt;en-GB&amp;lt;/f:variable&amp;gt;&lt;br /&gt;
					&amp;lt;/f:case&amp;gt;&lt;br /&gt;
					&amp;lt;f:defaultCase&amp;gt;&lt;br /&gt;
						&amp;lt;f:variable name=&amp;quot;languageTitle&amp;quot;&amp;gt;De&amp;lt;/f:variable&amp;gt;&lt;br /&gt;
						&amp;lt;f:variable name=&amp;quot;hreflang&amp;quot;&amp;gt;de-DE&amp;lt;/f:variable&amp;gt;&lt;br /&gt;
					&amp;lt;/f:defaultCase&amp;gt;&lt;br /&gt;
				&amp;lt;/f:switch&amp;gt;&lt;br /&gt;
				&amp;lt;f:if condition=&amp;quot;{item.available}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;f:then&amp;gt;&lt;br /&gt;
						&amp;lt;a href=&amp;quot;{item.link}&amp;quot; hreflang=&amp;quot;{hreflang}&amp;quot; title=&amp;quot;{languageTitle}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;span&amp;gt;{languageTitle}&amp;lt;/span&amp;gt;&lt;br /&gt;
						&amp;lt;/a&amp;gt;&lt;br /&gt;
					&amp;lt;/f:then&amp;gt;&lt;br /&gt;
					&amp;lt;f:else&amp;gt;&lt;br /&gt;
						&amp;lt;span&amp;gt;{languageTitle}&amp;lt;/span&amp;gt;&lt;br /&gt;
					&amp;lt;/f:else&amp;gt;&lt;br /&gt;
				&amp;lt;/f:if&amp;gt;&lt;br /&gt;
			&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;/f:for&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/f:if&amp;gt;Copy&lt;br /&gt;
Breadcrumb Menu&lt;br /&gt;
Dieses Menü basiert auf dem Menü Typ rootline. Die Formatierung erfolg mit Foundation Standards.&lt;br /&gt;
&lt;br /&gt;
50 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor&lt;br /&gt;
50 {&lt;br /&gt;
  special = rootline&lt;br /&gt;
  special.range = 0|-1&lt;br /&gt;
  includeNotInMenu = 1&lt;br /&gt;
  as = menuBreadcrumb&lt;br /&gt;
}Copy&lt;br /&gt;
Template&lt;br /&gt;
&lt;br /&gt;
&amp;lt;f:if condition=&amp;quot;{menuBreadcrumb}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ul class=&amp;quot;menu-breadcrumb breadcrumbs&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;f:for each=&amp;quot;{menuBreadcrumb}&amp;quot; as=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;f:render partial=&amp;quot;Navigation/Elements/Item&amp;quot; arguments=&amp;quot;{item: item}&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/f:for&amp;gt;&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/f:if&amp;gt;&lt;/div&gt;</summary>
		<author><name>37.49.72.8</name></author>
	</entry>
</feed>