Oct 12

Manchmal ist es erforderlich z.B. ein TMENU mit einem eigenen PHP-Skript zu beeinflussen, weil mit TypoScript das gewünschte Ziel nicht erreicht werden kann. Das könnte z.B. dann der Fall sein, wenn Inhalte aus einer externen Datenbank (z.B. Anzahl der vorhandenen Einträge) im Menü zusätzlich zum bereits vorhandenen Navigationstext ausgegeben werden müssen. TYPO3 stellt hierfür “itemArrayProcFunc” bereit.

Die PHP-Funktion erstellen wir im Ordner “fileadmin/scripts/” und nennen es in diesem Fall “navigation.php”. Die Klasse muss “user_” gefolgt vom Dateinamen heißen, hier also “user_navigation”. Die Methoden können beliebig benannt werden, hier “itemArray”. Die rohe Datei “navigation.php” sieht nun wie folgt aus:

<?php

class user_breadcrumb {

	function itemArray($content, $conf) {

		for ($i = 0; $i < count($content); ++$i) {
			# YOUR CODE GOES HERE
		}

		return $content;
	}

}

?>

Diese muss nun im TypoScript mittels “includeLibs.”, gefolgt von einem eindeutigen Identfier, hier dem Dateinamen – also “includeLibs.navigation”, eingebunden werden. Zum Aufrufen der Methode, gibt es “itemArrayProcFunc”, die den Wert Klassenname, Pfeiloperator, Methode erhalt, in diesem Fall also “user_navigation-> itemArray”. Das TypoScript sieht danach wie folgt aus:

includeLibs.navigation = fileadmin/scripts/navigation.php

temp.navigation = HMENU
temp.navigation {
	1 = TMENU
	1 {
		itemArrayProcFunc = user_navigation->itemArray
		wrap = <ul id="navigation"> | </ul>
		noBlur = 1

		NO = 1
		NO {
			stdWrap.htmlSpecialChars = 1
			wrapItemAndSub = <li class="first"> | </li> |*| <li> | </li>
		}

		ACT < .NO
		ACT {
			wrapItemAndSub = <li class="first active"> | </li> |*| <li class="active"> | </li>
		}
	}
}

Zu berücksichtigen ist, dass das PHP-Skript im Ordner “typo3/sysext/cms/tslib/media/scripts/” abgelegt werden muss, wenn im Install-Tool die Option “noPHPscriptInclude” aktiviert wurde. Das hat zur Folge, dass der “includeLibs”-Pfad im TypoScript angepasst und bei jeder Aktualisierung von “typo3_src” die Datei erneut in den “typo3/sysext/cms/tslib/media/scripts/”-Ordner kopiert werden muss.



Verwandte Beiträge

1 Kommentar to “TYPO3-Navigation mit eigenem PHP-Skript beeinflussen”

  1. André Lademann:


    Danke! Das hat mir sehr weitergeholfen.

Kommentar schreiben