Zum Inhalt springen

Code austauschen per ifEmpty?

Erstellt am 3. Oktober 2005 · 7 Antworten · letzte Antwort am 5. Oktober 2005

Tags: Frage

bvoit ·

Hallo allerseits!

Ich habe folgendes Problem:

Ich habe eine Spalte in der ein Untermenü sowie Banner angezeigt werden sollen. Wenn jedoch keine Untermenüs vorhanden sind, soll ein zweiter Banner eingefügt werden.

Damit das ganze auch gut aussieht wird einiges an HTML-Code um das Menü "gewraped", selbiges um einen Banner.

Nun habe ich das Netz durchforstet und nach einer Möglichkeit gesucht um das zu bewerkstelligen. Die Frage wie ich nun den Code für den Marker austauschen kann habe ich mir allerdings nicht beantworten können.

Ich bin dann auch auf ifEmpty gestoßen welches ich eventuell verwenden könnte. Jedoch dürfte ich da so ziemlich alles falsch gemacht haben.

Hat jemand einen Lösungsansatz?

tia Bernhard

bvoit ·

Hallo, danke für den Link. Das könne schon ein Schritt in die richtige Richtung sein. Nur kann ich damit auch abfraten ob die Unterseiten auch Unterseiten haben? Weil Das Hauptmenü (aus welchem dann das problematische Untermenü erstellt wird) hat immer Unterseiten, es soll damit allerdings nicht immer ein Menü gemacht werden.

Zb.:

News hat zwar auch Unterseiten wie "aktuelle Meldungen" "Einzelansicht" etc... daraus soll aber kein Menü gemacht werden.

Zudem habe ich keine Ahnung wie ich das aus dem Link anwenden soll. Ich werde aber gleich versuchen damit etwas zu basteln.

Es sieht bei mir wie folgt aus:

temp.NAV3 = HMENU
temp.NAV3.entryLevel = 2
temp.NAV3.1 = TMENU
temp.NAV3.1 {
  wrap (
           <zeilenweise html="" code="">
           |
	   </zeilenweise>
       )
		
  NO {
	allWrap (
                  <html code="">
		     <td id="chgmenu{elementUid}"> 
                     | 
                     </td>
		  </html>

                  |*|
                    ...

                  |*|
                    ...
		)
			
	ATagParams = class="navi3"
				
	# Rollovereffekt
	subst_elementUid=1
	RO_chBgColor = #FFFFFF | | chgmenu
	RO=1
  }
		
		
  ACT {
	allWrap (
		   <html code="">
                      <td> | </td>
		   </html>
		)

			
  }
  ACT = 1

}

Bei dem HTML CODE... wird immer zeilenlangeer HTML-CODE eingefügt damit das ganze gut aussieht im Menü (formatierung)

eingefügt wird das ganze dann im PAGE-Object so:

  marks.NAV3 < temp.NAV3

Wo allerdings prüfe ich dann die Numrows ob es angezeigt wird oder nicht, bzw wo tausche ich dann den Code?

Bisher bin ich soweit gekommen... funktioniert allerdings nicht:

marks.NAV3 = HMENU
  NAV3 {
    data =  temp.NAV3
    if {
         isTrue.numRows{
           table = pages
           select {where= pid=13}
        } 
    }
  }
weasel ·

Hallo bvoit,

versuch doch mal

temp.NAV3.stdWrap.if.isTrue.numRows{
           table = pages
           select.where=pid=13
}
bvoit ·

Was für ein Erfolgserlebnis! Danke dir vielmals!

Dennoch habe ich noch eine Frage 😉 (Du musst entschuldigen ich stecke in Sachen Typo3 noch in den Kinderschuhen)

1. kann ich die pid irgendwie dynamisch einfügen? Also die uid der aktuellen Seite eintragen?

Etwas in die Richtung:

select.where=pid={$uid}

Ich weis meine "Veranschaulichungen" sind sehr dürftig aber ich hoffe du kannst dennoch etwas damit anfangen.

2. Wie kann ich es bewerkstelligen, dass er nicht die nächste Ebene abfragt (Sprich er fragt nicht ab ob zur aktuellen Seite Unterseiten vorhanden sind), sondern, dass er abfragt ob zu den Unterseiten noch Unterseiten existieren?

Ich habe da an etwas wie Rekursion gedacht (obwohl das im TS wohl kaum unterstützt wird).

bvoit ·

super danke! Das funktioniert Wunderbar

Jetzt eine ganz blöde Frage.

Wie baue ich mir so eine Abfrage zusammen? Ich meine woher nehme ich die Elemente wie pidInList etc.?

Und woher entnehme ich dann das "data", sprich wie hängt das zusammen?

Worauf ich hinaus will ist, dass ich das pidInList in der Referenz bereits gesehen habe, mir aber nicht gedacht habe, dass ich es brauchen könnte.

Irgendwie muss da ja auch ein logischer Ansatz dahinter sein.

Edit: Leider funktioniert der Link nicht.

weasel ·

Hallo,

also mit dem link hat sich ein fehler eingeschlichen hier nochmal..
http://www.typo3wizard.com/de/snippets/cool-stuff-typoscript/erstellen-top-10-der-zuletzt-geaenderten-inhalte.html

Naja man kommp auf sowas am einfachsten indem man beispiele anschaut und die dann den eigenen bedürfnissen anpasst. oft hilft auch der template analyzer um zu sehen wie gewisse sachen z.b. bei css_styled_content oder anderen extensions gemacht wurden.

in diesem falle habe ich pidInList.data genommen da where keinen stdWrap unterstützt und ich deshalb keine daten dynamisch reinschreiben kann