Zum Inhalt springen

div nur anzeigen, wenn content vorhanden ist

Erstellt am 10. Juli 2006 · 9 Antworten · letzte Antwort am 24. Juli 2006

Tags: Templates & Layouts, Frage

tgffan ·

Hallo Gemeinde,

ich benutze css_styled_content und habe einen div-bereich mit der id="links" in mein template eingebaut. dieses ist ebenfalls markiert mit <!-- ###links### begin--> und <!-- ###links### end--> .

hier soll mittels subparts.links < styles.content.getLeft der inhalt eingefügt werden.

wie kann ich es anstellen, dass wenn kein inhalt im styles.content.getLeft ist, dass das div dann auch gar nicht im quelltext auftaucht.

eine lösung wie per css wäre auch denkbar, sprich visibility: hidden

thx
tgf

Honk88 ·

wenn ich dein problem richtig verstehe
dann weißt du dem div im css irgendeine
hintergrundfarbe o-ä- zu
und eine breite/höhe --> du bekommst
eine lehre box angezeigt.

andernfalls dürfte das leere div ja nich stören 😃

also maße wegmachen, dann ist es 0px x 0px wenn kein
Inhalt reingewrapt wird

wenn du das machst bekommst du vielleicht probs mit
der Breite/Höhe des reingewrapten Inhalts.

Dann musst du max-width/heights verwenden

LG
Honk

basti79 ·

Ich hatte neulich ein ähnliches Problem: Während der Navigation durch ein Menü sollten einige Elemente auf der Seite, die nur an den "Blättern" des Menü"baumes" Sinn ergeben (konkret: Vor/Zurück-Links), ausgeblendet werden. Ich behalf mir mit einem if-block:

20 = HMENU
20.if {
  isFalse.cObject = CONTENT 
  isFalse.cObject {
    table = pages
    pidInList = this        
    renderObj = TEXT
    renderObj.value = *
  }
}
# (hier fehlt noch was)

Es wird also "einfach" abgefragt, ob die Seite untergeordnete Seiten hat. Mit einer kleinen Modifikation kann auch auf die Existenz von Inhalt reagiert werden.

tgffan ·

hi,

vielen dank für die antworten.
diese if-bedingugnen habe ich auch shcon gefunden.
nur weiß ich sie noch nicht ganz anzuwenden.

dabei muss man wissen, dass ###vorlinks### den div-tag umklammert

# mainTemplate cObject
temp.mainTemplate = TEMPLATE
temp.mainTemplate {
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:
  template =< plugin.tx_automaketemplate_pi1
    # Select only the content between the <body>-tags
  workOnSubpart = DOCUMENT_BODY
  subparts.navigation < temp.navigation

  subparts.links < styles.content.getLeft

    # Hier das was ich mir gedacht habe, es funktioniert aber nicht ;)
  subparts.links.if {
    isEmpty.subparts.vorlinks = TEXT
    isEmpty.subparts.vorlinks.value >
  }

  subparts.content < styles.content.get
}

vll. gibt es ja auch ne möglichkeit mittels der stylessheets über typoskript auf das div zuzugreifen und dann die eigenschaft display: none; zuzuweisen.

thx
tgf

Proximo ·

Ja...
.
.

ach quatsch ich helf dir natürlich 😃

Ich sags gleich, für unsere Schlaumeier, dazu, dass es unzählige Ansätze dafür gibt, vom Datenbankpharsing über Filewriter und einfachte Text-Marker...

Hier mal MEINE Methode:

page.headerData.30 = Beliebiger HTML-Code

Also eben auch beispielsweise:

page.headerData.30 (<style type="text/css">
                          /*<![CDATA[*/
                            <!--
                              #meintag { display: none; }
                            -->
                          /*]]>*/
                        </style> )

Nun, was spricht für diese Umsetzung.... ach ja, sie ist einfach verständlich und umsetzbar 😉

Und, da wir hier mit HTML arbeiten, ist folgendes natürlich auch zulässig^^

page.headerData.30 = <style type="text/css">/*<![CDATA[*/<!-- #meintag{display: none;}-->/*]]>*/</style>

Alternativ: Intag-Marker, Filewriter, Pharser, Datenbank, Extension und... eigenes Typo3 entwickeln^^

MFG Proximo

steffenk ·

es geht doch viel einfacher ...

page.10.subparts.links < styles.content.getLeft
page.10.subparts.links.stdWrap.required = 1
page.10.subparts.links.stdWrap.wrap=<div id="links">|</div>
tgffan ·

vielen dank.

kann man die funktion der befehle irgendwo nachschlagen.
denke da an sowas wie selfhtml oder php.net

thx
tgf

d.​walter ·

Hallo, ich hab ein ähnlich gelagertes Problem. Und zwar bau ich mir um meinen Marker ###SUBNAV### im HTML-Templat einen Rahmen mit diesem Code:

<div class="bg">
	  <div class="ro">
	<div class="lo">
		<div class="ru">
			<div class="lu">
				<div class="inhalt">
		 ###SUBNAV###		 </div>	</div>
			</div>
		</div>
	</div>
</div>

Wenn jetzt aber natürlich kein Subnav das ist, ist der Kasten trotzdem leer vorhanden.

Wenn ich von SteffenK den Code verwenden, dann lege ich doch meine Box um jeden Link. Ich würde das aber gern um alle Links legen.

Hat mir jemand vielleicht einen Tip?

Danke

Gruß

Daniel

steffenk ·

aha, Du hast Dir also eine Rundbox gebaut 🙂

Am einfachsten machst Du es mit einem COA, da kannst Du reinpacken was Du willst.
Die Divs kommen ins TS als wrap, also so:

page.10.marks.SUBNAVI = COA
page.10.marks.SUBNAVI {
   stdWrap.required = 1
   stdWrap.wrap = <div class="bg"><div class="ro"><div class="lo"><div class="ru"><div class="lu"><div class="inhalt"> |  </div></div></div></div></div></div> 

   1 = HMENU
   1 {
      ...
   }
}

}

d.​walter ·

Hallo Steffen,

hat genauso wie du es geschrieben hast perfekt geklappt.

Vielen Dank nochmal für die Hilfe.

Gruß

Daniel