Zum Inhalt springen

Wrap mit option split

Erstellt am 21. Mai 2007 · 10 Antworten · letzte Antwort am 30. August 2008

Tags: Frage

George Mason ·

Hallo liebe TYPO3-Forum-Mitglieder 🙂

ich bastle gerade an einer neuen Website, bei der ich die Content-Elemente in einem extra-Container wrappe:

# Wrappe jedes Inhaltselement
tt_content.stdWrap.wrap = <div class="subcolumns">|</div>

Das funktioniert auch tadellos. Jetzt möchte ich gerne, dass das letzte Element einen anderen wrap verpasst bekommt. Wie kann ich das bewerkstelligen? Ich habe es mit der Syntax für option split probiert, etwa so:

tt_content.stdWrap.wrap = <div class="subcolumns">|</div>|*|<div class="subcolumns">|</div>|*|<div class="test">|</div>

bisher ohne Erfolg. Wer kann mir helfen?
Viele Grüße

GM

BastianBalthasarBux ·

probiers mal mit

tt_content.stdWrap.dataWrap

und nicht vergessen den a tag mit einbauen: <a id="c{field:uid}"></a>|

ansonsten scheint die syntax ok zu sein.

George Mason ·

Nö, das klappt nicht. Mit diesem TS wird gar kein Inhaltselement mehr gewrappt:

# Wrappe jedes Inhaltselement
  tt_content.stdWrap.dataWrap = <div class='subcolumns'>|</div>

Wozu soll ich diese a-tags einbauen? Ich glaube, die brauche ich nicht.

George Mason ·

Vielen Dank just2b, für den Link. Leider habe ich es noch nicht geschafft, das Beispiel auf mein TS zu übertragen. Ich hätte wohl auch dazu sagen müssen, dass ich templa voila benutze (klar, mein Fehler, selbst Schuld!)
Also, das wrappen mit dem Splitter-Teil funktioniert, ja, aber wie ersetze ich das jetzt mit dem jeweiligen <div>?

Sicherheitshalber hier mal der relevante Teil meines TS:

# TYPO3 - Stylesheets abschalten
plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE >

# entfernt die HTML-Kommentare der entsprechenden Objekte ###
tt_content.text.20.prefixComment =
tt_content.stdWrap.prefixComment =
tt_content.table.20.stdWrap.prefixComment =
lib.stdheader.stdWrap.prefixComment =
tt_content.image.20.stdWrap.prefixComment =
tt_content.html.prefixComment = 

# Allgemeine TypoScript-Konfiguration
page = PAGE
page {
  bodyTag = <body>
  stylesheet = fileadmin/styles.css
  config.doctype = xhtml_strict
  config.xhtml_cleaning = all
  config.xmlprologue = none
  config.removeDefaultJS = 1
  config.admPanel = 1    
    
  config.metaCharset = utf-8
  #config.renderCharset = utf-8
  config.additionalHeaders = Content-Type:text/html;charset=utf-8
  config.index_enable = 1
  config.index_externals = 1
  typeNum = 0
  
# Templa Voila  
  10 = USER
  10.userFunc = tx_templavoila_pi1->main_page
}

# Wrappe jedes Inhaltselement
stdWrap.outerWrap = |###SPLITTER###

# Hier muss jetzt noch das Splitter-Zeugs durch etwas ersetzt werden. 

### RTE Tuning
class="bodytext" bei RTE abstellen
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class >

#Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = cite, div, p, pre, h1, h2, h3, h4, h5, h6 

#Entfernt die zusätzlichen CSS-Klassen
lib.stdheader.3 = LOAD_REGISTER
lib.stdheader.3.headerClass =
lib.stdheader.3.headerClass.noTrimWrap = |
lib.stdheader.stdWrap.dataWrap = |
 
#Content Elemente aufräumen und Kommentare entfernen
tt_content.stdWrap.dataWrap >
tt_content.stdWrap.prefixComment >
tt_content.header.20.dataWrap >
tt_content.header.20.prefixComment >
tt_content.default.prefixComment >
tt_content.text.stdWrap.prefixComment >
tt_content.text.20.prefixComment >
tt_content.textpic.20.stdWrap.prefixComment >
tt_content.table.20.stdWrap.prefixComment >
tt_content.mailform.20.stdWrap.wrap >
tt_content.menu.20.stdWrap.prefixComment >
tt_content.image.20.stdWrap.prefixComment >
tt_content.list.20.stdWrap.prefixComment >
walk2moon ·

Hallo Forum, hallo George,

ich habe genau das gleiche Problem. Bei dem Link von Georg stellt sich mir das Problem, dass ich nicht recht weiß, wie ich an das letzte Content Element meiner Spalte content rankomme... Es wird hier ja von 7 Elementen ausgegangen. Ich müsste das allerdings dynamisch halten, da ich ja nicht immer genau 7 Elemente auf meiner Seite habe. Da liegt der Hase im Pfeffer...

Ich benutze ebenfalls TemplaVoila. Vielleicht kann mir hier jemand ein Beispiel zur Lösung geben. Hast Du hierfür schon eine Lösung gefunden?

Viele Grüße
Walter

George Mason ·

Menüs wrappe ich so:

1.NO.allWrap = <li id="mainfirst">|</li>|*|<li>|</li>|*|<li id="mainlast">|</li>

Ich weiß gerade nicht mehr, wie ich das mit dem Content gemacht habe, aber es müsste so ähnlich sein. stdWrap.wrap kann glaube ich kein optionsplit.

walk2moon ·

Hallo George, danke für deine Antwort. Ich habe das nochmal probiert und folgenden Ansatz versucht:

tt_content.stdWrap.preCObject = COA
tt_content.stdWrap.preCObject {
10 = LOAD_REGISTER
   10.counter.cObject = TEXT
   10.counter.cObject.data = register:counter
   10.counter.cObject.wrap = |+1
   10.counter.override = 1
   10.counter.override.if.equals.data = register:counter
   10.counter.override.if.value = 2
   10.counter.prioriCalc = intval
}

tt_content.stdWrap {
        outerWrap = <div class="test1">|</div>
        outerWrap.override.if.value = 1
        outerWrap.override.if.equals.data = register:counter
        outerWrap.override = <div class="test2">|</div>
}

Das funktioniert soweit ganz gut. Nun habe ich aber das Problem, dass ich an den letzten Datensatz der SPALTE mit den ContentElementen ran will. Jetzt sind denk ich schon die TS-Profis gefragt, oder? Mir fehlt die möglichkeit den stdWrap nur auf die Spalte mit dem Inhalt zu beziehen. Any ideas?

Weiterhin müsste man nun die Anzahl der Datensätze der Inhaltsspalte in ein register auslesen und dann entsprechend vergleichen.

Etwa in der Art:

temp.navtt = COA
temp.navtt {
      10 = CONTENT
      10 {
	table=tt_content
      	select {
      		selectFields = count(*) AS counter
      		pidInList = this
      	}
      	renderObj = LOAD_REGISTER
      	renderObj.anzahl.cObject = TEXT
      	renderObj.anzahl.cObject.field = counter
      	}
      	20 = TEXT
      	20.data = register:anzahl
}

Auch hier habe ich noch das Problem, dass ich lediglich die Anzahl der CE in der Inhaltspalte erhalten will (verwende TemplaVoila!!!). Nun, wo sind die TS-Profis? #giggle#

Ich bekomme das mit der Spalte noch nicht hin...

Vielen Dank schon mal für die Hilfe.
Walter