Content Rendern

Vorbedingung

Um Content auf der Seite zu rendern muss das statische Template  CSS-Styled Content in den Templates inkludiert sein. Dies ist nicht mehr aktuell und wird nun von Fluid-Styled Content ersetzt.

Erstellt: 07/2010| Geändert: 03/2023

Kommentare entfernen

 Um Kommentare zu entfernen muss folgendes im Template enthalten sein:

# Comments
tt_content.stdWrap.prefixComment >

# Comments
page.config.xhtml_cleaning = all
page.config.disablePrefixComment = 1

Um Javascript zu entfernen muss folgendes im Template enthalten sein:

config.removeDefaultJS = 1

***Aber*** für den Email Spamschutz wird das Javascript benötigt!

config.removeDefaultJS = 0

Oder noch besser: auslagern:

config.removeDefaultJS = external

Erstellt: 07/2010| Geändert: 10/2015

Content Tags bereinigen

Ich habe dies hier mal der Vollständigkeit halber aufgeschrieben, benutze es aber selbst nicht - bei mir sind keine unerwünschten Tags zu sehen.

Lösung A

Entfernen aller Tags um Content - oder zumindest der style="margin: 0 0 0 0" etc. Attribute:

remove all tags
tt_content.text.20.parseFunc.nonTypoTagStdWrap.enc apsLines.nonWrappedTag >

remove attributes:
tt_content.text.20.parseFunc.nonTypoTagStdWrap.enc apsLines.addAttributes {
  P.style=
  PRE.style=;
}

Alternative um die style="margin: 0 0 0 0" etc. Attribute zu entfernen:

content.RTE_compliant.mode = stylesheets

siehe htmlArea RTE rtehtmlarea

Lösung B

In den Constants des Templates folgendes aufnehmen:

Wenn content(default) verwendet wird:

content.RTE_compliant = 0


Wenn using css styled content verwendet wird:

tt_content.stdWrap.dataWrap >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines>

Erstellt: 07/2010| Geändert: 10/2015

Tabulatoren in Strings

Um Tabulatoren in einem Typoscript String zu verwenden gilt folgende Syntax:

  headerComment (
      Design and Programming by www.rootsystem.de
  )

Der Trick ist, dass kein Text in der ersten Zeile steht sondern in der zweiten, die mit einem Tab beginnt der einfach im formularfeld mit der Tastatur eingegeben wird.

Erstellt: 07/2010| Geändert: 10/2015

Javascript

In Javascript sind z.B. Links "kaputt" index.php?id=20 wird zu indexphp. Dagegen hilft:

page.config.xhtml_cleaning = 0

Siehe hierzu auch Bugreport (sollte in aktuellen Versionen nicht mehr auftreten).

Erstellt: 07/2010| Geändert: 10/2015

Bilder Qualität

Um die Standardeinstellung für die Qualität der Bilder zu ändern folgendes in die localconf.php:

TYPO3_CONF_VARS['GFX']['jpg_quality'] = '100' 

Erstellt: 07/2010| Geändert: 10/2015

Content oder Plugin auf jeder Seite anzeigen

Cached

Um Content oder ein Plugin auf jeder Seite anzeigen folgendes ins TS Template:

 

# ----------  RSYS_OBJECTBASE---------- 
RSYS_OBJECTBASE = RECORDS
RSYS_OBJECTBASE {  
  tables = tt_content
  source = 156}
# ----------  RSYS_OBJECTBASE---------- 

Das Plugin muss auf einer (z.B. versteckten) Seite plaziert sein. Der Wert für source ist die UID des Plugins oder Content Elements

Non Cached

Um ohne Cache das Plugin einzufügen (und auch ohne das Plugin auf einer Seite einfügen zu müssen) folgendes TS: 

# ----------  RSYS_OBJECTBASE----------
RSYS_OBJECTBASE = COA_INT
RSYS_OBJECTBASE {
  # plugin
  10 < plugin.tx_rsysobjectbase.controllerSwitch.listObjectbasesTeaser
  10.configurations.defaultAction = updaterank 

  # zum testen, ob der cache auch aus ist
  20 = TEXT
  20.data = date: H:i:s
  20.wrap Zeit: |<br>
}
# ----------  RSYS_OBJECTBASE---------- 

 

Erstellt: 07/2010| Geändert: 10/2015

Mehrere Bilder rendern aus levelmedia

Mehrere Bilder aus dem "Feld" levelmedia zu rendern folgendes ins Template:

# ---------- RSYS_RIGHTPICTURE ---------
RSYS_RIGHTPICTURE = COA
RSYS_RIGHTPICTURE {
   
    1 = COA
    1 {
        stdWrap.required=1
        stdWrap.outerWrap.cObject = TEXT
        stdWrap.outerWrap.cObject.value = <img src="|" border=0 width="200">
           
        2 = IMG_RESOURCE
        2 {
            data = levelmedia:3 // levelmedia:2 // levelmedia:1 // levelmedia:0
            file { 
                import.data = levelmedia:3 // levelmedia:2 // levelmedia:1 // levelmedia:0
                import = uploads/media/
                import.listNum = 0
                width = 200
            }
        }           
    }
    2 < .1
    2.2.file.import.listNum = 1
    3 < .1
    3.2.file.import.listNum = 2
    4 < .1
    4.2.file.import.listNum = 3
    5 < .1
    5.2.file.import.listNum = 4
       
}
# ---------- end RSYS_RIGHTPICTURE ---------

Damit werden mehrere Bilder gerendert aus dem Feld Resourcen der Seite - genau so viele wie Einträge im Auswahlfeld Resourcen eingetragen sind.

HTML Template

Der Marker ###RSYS_RIGHTPICTURE### wird dann ersetzt mit mehreren <img src=...> Elementen.

Erstellt: 07/2010| Geändert: 10/2015

levelfield verwenden

Um obige Aufgabe mit Einträgen aus einem eigenen Feld zu realisieren, kann man levelfield verwenden. Obiges Template wird dann folgenden Eintrag enthalten:

# ---------- RSYS_HEADPICTURE ---------
RSYS_HEADPICTURE = COA
RSYS_HEADPICTURE {
            
     1 = COA
     1 {
        stdWrap.required=1
        stdWrap.outerWrap.cObject = TEXT
        stdWrap.outerWrap.cObject.value = |
            
        2 = IMG_RESOURCE
        2 {
              
           file {  
                import.data = levelfield:3,tx_rsyspagepicture_backgroundpic // levelfield:2,tx_rsyspagepicture_backgroundpic // levelfield:1,tx_rsyspagepicture_backgroundpic // levelfield:0,tx_rsyspagepicture_backgroundpic
                 import = uploads/tx_rsyspagepicture/
                 import.listNum = 0
                 width = 188
             }
         }            
     }
 }
 # ---------- end RSYS_HEADPICTURE ---------

Damit wird der Eintrag aus dem Feld tx_rsyspagepicture_backgroundpic verwendet. Dieses Feld kommt aus einer simplen Extension rsys_pagepicture, welche nur ein Feld Hintergrundbild zu der Seite hinzufügt.

addRootLineFields

Damit das funktioniert muss allerdings ein Eintrag des Feldes in addRootLineFields vorgenommen werden. Dazu in die localconf.php:

$TYPO3_CONF_VARS['FE']['addRootLineFields'] = ',tx_rsyspagepicture_backgroundpic';

HTML Template

Der Marker ###RSYS_HEADPICTURE### wird dann ersetzt mit dem Bildnamen mit Pfad.

<div id="rsys_header_left" style="background-image: url(###RSYS_HEADPICTURE###);">

Erstellt: 07/2010| Geändert: 10/2015

Stylesheets Nummerierung

In neueren TYPO3 Versionen ist ein gut gemeintes Caching für CSS FIles implementiert. Es hängt an die verlinkten Stylesheets mit ? eine eindeutige Nummer an den Link. Im Fall dass man einen statischen Abzug der Seite machen will funktionieren dann aber die css Links nicht mehr - da die Dateien stylesheet.css?123456 heissen.

Es hat lange gedauert bis ich herausgefunden habe wie man dies abschalten bzw. umkonfigurieren kann:

Die Funktion createVersionNumberedFilename in t3lib/class.t3lib_div.php verrät des Rätsels Lösung:

     *
     * Function for static version numbers on files, based on the filemtime
     * This will make the filename automatically change when a file is
     * changed, and by that re-cached by the browser. If the file does not
     * exist physically the original file passed to the function is
     * returned without the timestamp.
     *
     * Behaviour is influenced by the setting
     * TYPO3_CONF_VARS[TYPO3_MODE][versionNumberInFilename]
     * = true (BE) / "embed" (FE) : modify filename
     * = false (BE) / "querystring" (FE) : add timestamp as parameter

Also genügt ein Eintrag in die localconf.php und die Links sehen so aus: stylesheet.123456.css

$GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']='embed';

 

Erstellt: 02/2011| Geändert: 10/2015

Sonderzeichen in Seitennamen und Content

Wenn im Seitennamen oder in der Überschrift eines Contentelements Sonderzeichen nötig sind (z.B. &reg; für ®) geht dies nur mit Modifikationen.

Für Überschriften:

lib.stdheader.10.setCurrent.htmlSpecialChars = 0

Für Menüs für alle Zustände (NO,ACT,CUR):

ACT.stdWrap.htmlSpecialChars = 0 

Title Tag

Im <title> Tag muss man die Typo eigene Generierung des Title Tags abschalten und das Tag selbst erzeugen, nur dann klappen Sonderzeichen:

# page title
config.noPageTitle = 2
page.headerData {
    30 = TEXT
    30.dataWrap = <title>Default Site 4.6. -  {page:title}</title> 
}

Nachteil

Das Setzen des Titels in einer Extension funktioniert dann nicht mehr:

$GLOBALS['TSFE']->page["title"] =

Erstellt: 12/2011| Geändert: 10/2015

Backend Layout Auswahl

Die Backend Layout Auswahl war bis zur Version 9:

page.10 = FLUIDTEMPLATE
    10 {
        file.cObject = CASE
        file.cObject {
            key.data = levelfield:-1, backend_layout_next_level, slide
            key.override.field = backend_layout

            default = TEXT
            default.value = tmpl_default.html

Ab Version 9 hat sich das geändert:

key.data = pagelayout

Erstellt: 05/2019| Geändert: 05/2019