Zum Inhalt springen

[Frage] Problem mit TypoScript Menü

Erstellt am 10. Januar 2014 · 3 Antworten · letzte Antwort am 13. Januar 2014

Tags: TYPO3 4.x, Frage

efgrib ·

Hallo,

ich plage mich gerade mit einem TypoScript-Menü herum udn komm nciht mehr weiter...

Die Schwierigkeit für mich ist derzeit, die dynamisch erzeugten span und p - Tags an die richtige Stelle zu bekommen, mir ist klar das die Verwendung von "before" keinen Sinn ergibt, aber erstmal wollte ich überhaupt den Inhalt irgendwie erzeugen, jetzt fehlt "nur" noch die richtige Struktur. Bin für jede Hilfe dankbar.

derzeitiger Stand:

<div class="classname1">
	<li>
		<span class="classname2">text</span>
		<a href="link">
			<img src="xxx">
		</a>
		<div>
			<p class="classname3">text</p>
		</div>
	</li>
</div>

Typoscript dazu:

lib.menuArtist = COA
lib.menuArtist.10 = HMENU
lib.menuArtist.10.special = directory
lib.menuArtist.10.special.value = 10
lib.menuArtist.10.1 = TMENU
lib.menuArtist.10.1 {
	noBlur = 1
	NO {
		wrapItemAndSub = <div class="classname1"><li>|</li></div>
		stdWrap.override.cObject = IMAGE
		stdWrap.override.cObject {
			file {
				import {
					cObject = TEXT
						cObject {
							cObject = TEXT
							cObject {
								value = fileadmin/templates/design01/img/artist_default.png
								override {
									required = 1
									data = levelmedia:-1, slide
									wrap=uploads/media/|
									listNum = 0
								}
							}
							override {
								required = 1
								field = media
								wrap=uploads/media/|
								listNum = 0
							}
						}
					}
				}
			altText.field = title
			titleText.field = title
		}
		
		before {
			field = title
			wrap=<span class="classname2">|</span>
		}
        
		after {
			field = abstract
			crop = 250 | ... | 1
			wrap=<div><p class="classname3">|</p></div>
		}   
	}
}

Am Ende sollte das Ergebnis so aussehen:

<div class="classname1">
	<li>
		<a href="link">
			<img src="xxx">
			<div>
				<span class="classname2">text</span>
				<p class="classname3">text</p>
			</div>
		</a>
	</li>
	<li> 
	... 
	</li>
</div>
Bluespuke ·

Du könntest after.cObject setzen und dann frei zusammen bauen:
(und before raus schmeissen)

after.cObject = COA
after.cObject{
wrap = <div>|</div>

10 = TEXT
10.field = title
10.wrap=<span class="classname2">|</span>
 
20 = TEXT
20.field = abstract
20.crop = 250 | ... | 1
20.wrap = <p class="classname3">|</p>
}
efgrib ·

ersteinmal dankeschön, aber funktioniert noch nicht ganz wie gewünscht: p und span jetzt sind zwar da wo sie sollen (innerhalb des div), das umschliessende div befindet sich aber noch nicht innerhalb des a- tags sondern dahinter

efgrib · · Beste Antwort

lösung gefunden, preCObject und postCObject müssen verwendet werden:

lib.menuArtist = COA
lib.menuArtist.10 = HMENU
lib.menuArtist.10.special = directory
lib.menuArtist.10.special.value = 10
lib.menuArtist.10.1 = TMENU
lib.menuArtist.10.1 {
  noBlur = 1
  NO {
    wrapItemAndSub = <div class="classname1"><li>|</li></div>
    stdWrap.override {      
      preCObject = IMAGE
      preCObject {
        file {
          import {
            cObject = TEXT
            cObject {
              cObject = TEXT
              cObject {
                value = fileadmin/templates/design01/img/artist_default.png
                override {
                  required = 1
                  data = levelmedia:-1, slide
                  wrap=uploads/media/|
                  listNum = 0
                }
              }  
              override {
                required = 1
                field = media
                wrap=uploads/media/|
                listNum = 0
              }
            }
          }
        }
        altText.field = title
        titleText.field = title
      }
      postCObject = COA
      postCObject {
        wrap = <div>|</div>   
        
        20 = TEXT
        20.field = title
        20.wrap = <p class="classname2">|</p>
     
        30 = TEXT
        30.field = abstract
        30.crop = 250 | ... | 1
        30.wrap = <p class="classname3">|</p>     
      }
    }
  }
}