Mehrzeilige TMENU-Menüs in Typo3 (Zeilenumbrüche bei TMENU)

Mittwoch, 27. Januar 2010

Problem: Man möchte ein TMENU mit mehrzeiligem Text in den Menüpunkten erzeugen. Dazu kann man eine Kombination aus einem COA und dem splitChar verwenden. Hier wird das Trennzeichen chr(13) verwendet.

Als TypoScript für den Menüaufbau verwendet man:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1 = TMENU
1.wrap = |
1.expAll = 0
   
1.NO = 1
1.NO {
   wrapItemAndSub = <ul><li>|</li></ul>
   1 = COA
   1.10 = TEXT
   1.10 {
      field = nav_title // title
      listNum = 0
      listNum.splitChar = 13
   }
      
   1.20 < .1.10
   1.20.listNum = 1
   1.20.wrap = <br />|
   1.20.required = 1
      
   stdWrap.field >
   stdWrap.cObject = TEXT
   stdWrap.cObject < .1
 
}

Um die Felder “Navigations-Titel” (nav_title) und “Seiten-Titel” (title) im Backend mehrzeilig zu machen kann man die Datei extTables.php um folgende Zeilen ergänzen:

1
2
3
4
5
$TCA['pages']['columns']['title']['config']['type'] = 'text';
$TCA['pages']['columns']['title']['config']['rows'] = '2';
 
$TCA['pages']['columns']['nav_title']['config']['type'] = 'text';
$TCA['pages']['columns']['nav_title']['config']['rows'] = '2';

Update 2014:

Alternativ zum Beispiel oben funktioniert es auch so:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1 = TMENU
1.wrap = |
1.expAll = 0
   
1.NO = 1
1.NO {
   wrapItemAndSub = <ul><li>|</li></ul>
   stdWrap.cObject = COA
   stdWrap.cObject {
      10 = TEXT
      10 {
         field = nav_title // title
         listNum = 0
         listNum.splitChar = 13
      }
      20 < .10
      20 {
         listNum = 1
         wrap = <br />|
         trim = 1
      }
   }
}