Zum Inhalt springen

Wrap um Ausgabe einer Extension entfernen

Erstellt am 28. Januar 2014 · 6 Antworten · letzte Antwort am 3. Februar 2014

Tags: Inhaltselemente, Frage

Copprhead ·

In meiner Extbase/Fluid-Extension simuliere ich den Output von css_styled_content, damit ich Standard-Content und Inhalte meiner Extension mischen kann und alle CSS und JS Funktionen/Hacks weiterhin funktionieren. Alles kein Problem, in die Fluid-Templates kann ich ja schreiben, was ich will.

ABER: Typo3 wrapt mir immer die Ausgabe meiner Extension mit einem <div id="cXX"..> </div>, was dazu führt, dass sich die Struktur meines DOM ändert und damit ein Javascript und CSS-Anweisungen nicht mehr funktionieren.

Wie bekomme ich das div-wrap weg? Für pi_based-Extensions habe ich schon eine Lösung gefunden, aber wie geht das mit Extbase-Extensions?

jenses ·

Das sollte doch genauso funktionieren -
<div id="cXX"..> </div> wird ja nicht von Extbase oder piBase gesetzt,
sondern von css_styled_content.

Copprhead ·

Laut eines Forumseintrags wird mit "return $this->pi_wrapInBaseClass($content);" der Wrap gemacht. Diesen Aufruf finde ich aber in meiner Extension nirgends.

jenses ·
Copprhead schrieb

Laut eines Forumseintrags wird mit "return $this->pi_wrapInBaseClass($content);" der Wrap gemacht. Diesen Aufruf finde ich aber in meiner Extension nirgends.

Man soll nicht alles glauben, was man in Internetforen findet.
pi_wrapInBaseClass baut einen "<div class="tx_meineextension_pi1"></div>" um die Ausgabe.

Wie gesagt, der Wrap kommt aus css_styled_content, irgendwo bei tt_content.stdWrap (...oder so, habe grad keine Installation vor der Nase).
Schau im Typoscript Objectbrowser nach, ist nicht schwer zu finden.

Copprhead ·

Hallo Flash,

danke für den Hinweis. Mit

tt_content.stdWrap.innerWrap.cObject.default >

wird man den wrap los.

Nur leider betrifft das dann alle Inhaltselemente. Ich möchte den wrap aber nur bei der Ausgabe meiner Extension nicht haben. Wenn ich das gleiche ins setup.txt meiner Extension schreibe, hat es leider keine Auswirkung.

jenses ·

Nee, natürlich nicht, das Wrapping gilt global für alle Inhalte.
Wenn du es nur für deine Extension abschalten willst, mußt du weitergraben.
Ich empfehle dir einen Blick (oder mehrere) direkt in /typo3/sysext/css_styled_content/static/setup.txt.

tt_content.stdWrap.innerWrap.cObject.default.10.cObject ist vom Typ CASE.
Abhängig von CType werden unterschiedliche Wraps gebastelt, Plugins haben normalerweise den CType list - hier kannst du also schon mal nur für Plugins einen anderen (oder eben keinen) Wrap bauen.
Wenn du dann das Ganze noch davon abhängig machen willst, um welches Plugin es sich handelt,
mußt du noch weiter verschachtelten - auch dafür eignet sich cObject CASE, diesmal abhängig vom Feld list_type - dieses enthält nämlich den Namen des Plugins (außer bei tt_news, da ist der Wert aus historischen Gründen 9, wenn ich mich recht erinnere).

Alternativ könntest du natürlich CSS oder Javascript anpassen...

Copprhead ·

Ok, ich habe mal versucht das aufzusplitten. Erst mal nur für den Fall list (= plugin lt. Deinem Post). Leider wird immer der default-Zweig ausgeführt, obwohl bei meinem Inhaltselement in tt_content CType = list steht.

# alte Definitionen löschen
tt_content.stdWrap.innerWrap.cObject.default.10 >
tt_content.stdWrap.innerWrap.cObject.default.15 >
tt_content.stdWrap.innerWrap.cObject.default.20 >
tt_content.stdWrap.innerWrap.cObject.default.30 >

# im default Fall nochmals unterscheiden nach CType
tt_content.stdWrap.innerWrap.cObject.default = CASE
tt_content.stdWrap.innerWrap.cObject.default.key.field = CType
# Standardfall
tt_content.stdWrap.innerWrap.cObject.default.default = COA
tt_content.stdWrap.innerWrap.cObject.default.default {
  10 = TEXT
  10.value = <div id="default{field:uid}"
  10.insertData = 1
  30 = TEXT
  30.value = >|</div>
}
# wenn CType == list
tt_content.stdWrap.innerWrap.cObject.default.list {
  10 = TEXT
  10.value = <div id="super{field:uid}"
  10.insertData = 1
  30 = TEXT
  30.value = >|</div>
}