TYPO3 Tipps & Tricks

Alle Kategorien



Alle anzeigen / Alle verbergen

Antwort auf/zuklappen

In der Printansicht Backlink zur Normalansicht per Typoscript erzeugen

Wer die Druckversion im selben Fenster öffnet und ohne Javascript auskommen möchte (history.back();), kann einen "Zurück zur Normalansicht" Link auch so generieren:

# Link zur Normalansicht: aktuelle Seite mit allen Parametern ausser type=98 (=> Printansicht)
  10 = TEXT
  10.value = Zurück zur Normalansicht 
  10.typolink.parameter.data = TSFE:id
  10.typolink.addQueryString = 1
  10.typolink.addQueryString.exclude = type
  10.wrap = |

Kategorie: Typoscript
Antwort auf/zuklappen

Shell Command um Javascriptdateien in typo3temp zu löschen

find . -name "*.js" -print | xargs rm -f 
Antwort auf/zuklappen

Breadcrumb Menü: Seiten, die auf "Im Menü unsichtbar" gestellt sind, sollen im Breadcrumb-Menü angezeigt werden

Mit includeNotInMenu = 1  im Typoscript des Breadcrumb-Menüs werden Seiten angezeigt, bei denen die Option "Im Menü unsichtbar" aktiviert ist

temp.breadcrumb = HMENU
temp.breadcrumb {
  special = rootline
  special.range = 0|-1
  includeNotInMenu = 1
  1 = TMENU
  1.NO = 1
  1.NO.allWrap = |  ⇒
  1.CUR = 1
  1.CUR.allWrap = |
  1.CUR.doNotLinkIt = 1

Kategorie: Typoscript, Frontend
Antwort auf/zuklappen

Newsplugin: HTML Tags im Text der Listenansicht

//um HTML-Tags auch in der Listenansicht von tt_news zu ermöglichen
// folgendes ins Setup eintragen


plugin.tt_news.displayList.subheader_stdWrap.stripHtml = 0 

Antwort auf/zuklappen

Index-Suche auf zwei Seitenbäume (Mehrsprachig) aufteilen

Bei zweisprachigen Seiten, die über zwei verschiedene Seitenbäume realisiert werden, muss auch die Suchfunktion entsprechend angepasst werden, damit nicht beide Seitenbäume durchsucht werden.

Mit
plugin.tx_indexedsearch.search.rootPidList = Rootseite-der-jeweiligen Sprache
im jeweiligen Template werden gar keine Suchergebnisse ausgegeben.

Die Lösung liefert die Option "sections" (im Setup des Typoscript-Templates jedes Sprachbaums)
plugin.tx_indexedsearch._DEFAULT_PI_VARS.sections = rl1_2

rl(Ebene)_(Rootseite-der-jeweiligen Sprache)

 

 

 

Antwort auf/zuklappen

Datei Upload Option auch im RTE (Element Browser) aktivieren

Im Userdatensatz bzw. Datensatz der Benutzergruppe unter Optionen folgendes einfügen:
 
options.uploadFieldsInTopOfEB = 1

Kategorie: Backend, RTE
Antwort auf/zuklappen

Eigene 404 Fehlerseite bei alten PDF-Links in fileadmin-Ordner

Beim Relaunch einer TYPO3-Website kann es Probleme mit alten von Google indizierten PDF-Dateien geben, die sich unterhalb des fileadmin-Ordners befinden.
Hier funktioniert das Redirect zur eigens eingerichteten 404-Fehlerseite nicht. Es wird nur die 404-Serverseite angezeigt.

Lösung: eine .htaccess Datei  im Ordner fileadmin anlegen

Inhalt der .htaccess ist ein simpler Redirect zu einer beliebig gewählten Seite sobald ein 404 Error auftritt:

ErrorDocument 404 www.yourdomain.com/404.html

 

Kategorie: REALURL
Antwort auf/zuklappen

Copyright mit aktuellem Jahr

Mit etwas TypoScript bleibt die Jahreszahl im Copyright immer up-to-date:

temp.copyright = TEXT
temp.copyright.data = date:U
temp.copyright.strftime = %Y
temp.copyright.wrap = &copy; <span style="padding:0 1px;">|</span> rochelt.info
 

Kategorie: Typoscript
Antwort auf/zuklappen

Multilevel Textmenu als ungeordnete Liste

temp.navigation = HMENU
temp.navigation.entryLevel = 0

temp.navigation.1 = TMENU
temp.navigation.1.noBlur = 1
temp.navigation.1 {
    expAll = 1
    wrap = <ul>|</ul>
    NO.wrapItemAndSub = <li>|</li>
    IFSUB = 1
    IFSUB.wrapItemAndSub = <li class="hasSubpages">|</li>

temp.navigation.2 <   temp.navigation.1
temp.navigation.3 <   temp.navigation.1 

 

Kategorie: Typoscript
Antwort auf/zuklappen

Letztes/erstes Menüelement anders formatieren: optionSplit

#z.B. letztes Element erhält eine eigene CSS-Klasse

1.NO.allWrap = |*| <li>|</li> |*| <li class="last">|</li>    

Kategorie: Typoscript
Antwort auf/zuklappen

Meldung auf der TYPO3-Backend Loginseite ausgeben

Folgende Zeile in die Datei /typo3conf/extTables.php  eintragen:

$GLOBALS['TYPO3_CONF_VARS']['BE']['loginNews'][]= array (
    'header' => 'Ihre Überschrift',
    'content' => 'Ihr Meldungstext'
); 

Sie können natürlich auch mehrere Meldungen bzw. News für TYPO3-User ausgeben und das loginNews-Array erweitern:

$GLOBALS['TYPO3_CONF_VARS']['BE']['loginNews'][]= array (
    'date' => '2.1.2010',    
    'header' => 'Überschrift 2',
    'content' => 'Newstext 2'
);  

$GLOBALS['TYPO3_CONF_VARS']['BE']['loginNews'][]= array (
    'date' => '1.1.2010',    
    'header' => 'Überschrift 1',
    'content' => 'Newstext 1'
);   

Kategorie: Backend
Antwort auf/zuklappen

Indexed Search indiziiert metatags

indexed_search so konfigurieren, dass Meta_tags nicht durchsucht werden:

Ab der TYPO3-Version 4.2 geht's über Typoscript
Folgendes ins TS-Setup eintragen:

config.index_metatags =
page.config.index_metatags = 

Für alle Versionen darunter ist's leider etwas komplizierter. Hier muss die PHP-Funktion splitHTMLContent($content) adaptiert werden.  Ein Anleitung dazu findet ihr hier.

 

Antwort auf/zuklappen

TYPO3 barrierfrei?

Praktische Tipps zum Thema TYPO3 und Barrierefreiheit:

Einfach für alle
Alles zum Thema Barrierefreiheit

Barrierefreiheit in der Praxis
Wie der Name schon verrät, ein sehr praxisbezogener Artikel, t3n-Magazin

Kein Kinderspiel. TYPO 3 und Barrierefreiheit
Allgemeines zum Thema, t3n-Magazin

Video zum Vortrag "Standardkonforme Webseiten mit TYPO3"
Kai Laborenz spricht auf dem Multimediatreff in Köln über barrierefreie Websites mit TYPO3; sehr praxisbezogen

Buchtipp "TYPO3 4.0 Das Handbuch für Entwickler"
Kai Laborenz, Thomas Wendt, Andrea Ertel, Prakash Dussoye, Elmar Hinz, Verlag: Galileo Computing
Empfehlenswert ist vor allem der Part "Barrierefreie und standardkonforme Websites mit TYPO3"

YAML-Template für TYPO3
(X)HTML/CSS Framework, ausgerichtet auf Webstandards und Barrierefreiheit 

 

 

Kategorie: Frontend
Antwort auf/zuklappen

Mehrsprachige News per SELECT-Abfrage ausgeben

Eine eigene Typoscript-Abfrage ist wesentlich schneller als LIST or LATEST.
Brauchbar bei einer grossen Anzahl von Datensätzen.

Erzeuge eine Liste mit Newstiteln (inkl. Link zur Singleansicht):

#wenn keine Übersetzung vorhanden, zeige die Newseinträge der Default-Sprache
    config.sys_language_overlay = 1
   
     temp.mynewslist = CONTENT
     temp.mynewslist  {
                    table = tt_news
                    select {
                          pidInList = 123  # Sysfolder-ID mit Newsdatensätzen
                          languageField = sys_language_uid
                          where = deleted=0
                          andWhere = t3ver_state<=0
                          andWhere = hidden=0
                           orderBy = datetime DESC                                      
                    }
               
                    renderObj = COA
                    renderObj {
                    wrap =  |
                    10 = TEXT
                    10.field = title
                     10.typolink {
                         parameter = 777 # Seiten-ID der Seite mit News-Singleansicht
                         additionalParams=&tx_ttnews[tt_news]={field:uid}&tx_ttnews[backPid]={TSFE:id}
                         additionalParams.insertData=1
                         useCacheHash=1
                     }                  
                }
    }

 

Kategorie: Typoscript
Antwort auf/zuklappen

GET-Variable per TYPOSCRIPT auslesen

z.B. Link auf www.rochelt.info/index.php&deinParameter=deinWert

Folgender Code auf der Seite mit der PageID 31 gibt den Wert "deinWert" aus:

10 = COA
10 {
    10 = TEXT
    10.data = GPvar : deinParameter  

Kategorie: Typoscript
Antwort auf/zuklappen

IP-Adresse des Clients per TYPOSCRIPT ausgeben

 

10 = COA
10 {
    10 = TEXT
    10.data = getIndpEnv : REMOTE_ADDR
}

Kategorie: Typoscript
Antwort auf/zuklappen

<body> -Tag ändern

Um den Standard <body>-Tag zu ersetzen und z.B. einen Javascriptaufruf hinzuzufügen im Setup des Templates folgendes eingeben:

page.bodyTag = <body onload="onLoad();> 

Kategorie: Typoscript
Antwort auf/zuklappen

Spamprotection

Folgendes ins SETUP der Root-Seite:
config.spamProtectEmailAddresses = 2
config.spamProtectEmailAddresses_atSubst = (at)

Kategorie: Frontend
Antwort auf/zuklappen

Dateiverweise (Filelist): Icon für jeweiligen MIMETYPE

Neue Dateiendungen + entsprechendes Icon hinzufügen:

Icon mit dem Namen der Dateiendung (z.B. docx.gif) in folgendem Ordner speichern:

typo3/sysext/cms/tslib/media/fileicons/

Kategorie: Frontend
Antwort auf/zuklappen

Dateiverweise (Filelist): Beschränkung auf 10 Dateien aufheben

Folgenden Eintrag in typo3conf/extTables.php eingeben:

$GLOBALS['TCA']['tt_content']['columns']['media']['config']['maxitems']=100

Kategorie: Typoscript, Backend, Frontend
Antwort auf/zuklappen

In TYPOSCRIPT ein Logo verlinken

temp.logo = IMAGE
temp.logo.file = fileadmin/template/main/interface/logo.gif
temp.logo.altText = Alternativtext für Logo
temp.logo.stdWrap.typolink.parameter=http://www.einfach-ist-schön.at/

ODER suchmaschinenotpimiert und schöner mit CSS Image Replacement:

temp.logo = HTML
temp.logo.value = <a href="http://www.einfach-ist-schön.at/ "><h1>Einfach ist sch&ouml;n</h1></a> 

Im CSS-File:

#logo {position:relative; float:left; width:172px; height:38px;}
#logo h1 {width:172px; height:38px; background:url(../interface/logo.gif); text-indent: -9999px;padding:0; margin:0; border:0;}
#logo a {outline: none;}

 

Kategorie: Typoscript
Antwort auf/zuklappen

Backend Frame für Seitenbaum vergrößerbar machen

In der User TS-Config:  

setup.override.navFrameResizable = true
setup.override.navFrameWidth = 290
#Länge des Seitentitels begrenzen
setup.override.titleLen = 28 

Kategorie: Backend
Antwort auf/zuklappen

(Kopie 1) Beim Kopieren von Seiteninhalten unterdrücken

Folgende Zeile in das PageTS Ihrer Root Seite:


TCEMAIN.table.tt_content.disablePrependAtCopy = 1

Kategorie: Backend
Antwort auf/zuklappen

Backend Sprache auf Deutsch einstellen

Ab Typo3, Version 4.0  im Extension Manager:
"Extension Manager" -> "Translation handling" -> "German"
"Save Selection"
"Update from online repository"

Kategorie: Backend
Antwort auf/zuklappen

Submit Button fehlt in der Backend- Benutzerverwaltung

TYPO3 Version 4.2.10, BUG 0009738 

In der Backend User Administration fehlt der Submit-Button in "Group and Compare Users".

LÖSUNG: Gewünschte Checkbox aktivieren und auf ENTER-Taste drücken

Kategorie: Backend
Antwort auf/zuklappen

Seitencache löschen auch für NichtAdmin-User

In die User TSconfig

options.clearCache.pages = 1

Kategorie: Backend
Antwort auf/zuklappen

Page-ID im Seitenbaum anzeigen

In der User TS-Config:

options.pageTree.showPageIdWithTitle = 1 

Kategorie: Backend
Antwort auf/zuklappen

Kontextmenü: Bestimmte Optionen für einzelne Benutzer/Gruppen ausblenden

z.B.:

options.contextMenu {
    pageTree.disableItems = info,history,perms,hide,edit_access
}

typo3.org/documentation/document-library/core-documentation/doc_core_tsconfig/4.2.0/view/1/2/

options.contextMenu.[key].disableItems 

 

 

 

Kategorie: Backend
Antwort auf/zuklappen

Patch einspielen per SSH

1.) Auf der Website bugs.typo3.org findet man aktuelle Patches für TYPO3-Bugs.

2.) Das Patch-File per FTP in den TYPO3-Ordner hochladen.

3.) Über SSH verbinden und in das entsprechende Verzeichnis wechseln.

4.) Patch mit folgendem Befehl installieren:
patch -p0 < [Pfad-zum-Patch]/Name-des-Patches.patch

5.) Die  Änderungen werden automatisch eingespielt. 

Kategorie: Backend
Antwort auf/zuklappen

Bei Server-Crash

Dateien temp_CACHED_..... im typo3conf Verzeichnis löschen!

Kategorie: Backend
Antwort auf/zuklappen

Mehrsprachiger Link für Druckansicht

temp.druckansicht = COA

[globalVar = GP:L = 2]
      temp.druckansicht .wrap = Print Version
[else]
      temp.druckansicht .20.data = 0
      temp.druckansicht .wrap = Druckansicht
[end]

temp.druckansicht.10 = TEXT
temp.druckansicht.10.data = TSFE:id
temp.druckansicht.10.wrap = index.php?id=|

temp.druckansicht.20 = TEXT
temp.druckansicht.20.data = TSFE:sys_language_uid
temp.druckansicht.20.wrap = &L=|&type=98

Kategorie: Typoscript
Antwort auf/zuklappen

Globale Variable aus Setup-Template in PHP-Datei abfragen

Für Extension-Entwicklung:

z.B.  Domain wird im Setup des Website-Templates definiert

config.baseURL = www.einfach-ist-schoen.at

In der php-Datei der Extensionkann die Typoscript-Variable so abgefragt werden:
$theDomain = $GLOBALS["TSFE"]->config["config"]["baseURL"];

Antwort auf/zuklappen

Mehrere Stylesheets einbinden

seite.includeCSS {
   file1 = fileadmin/Internet/css/screen.css
   file1.media = screen,projection

    file2 = fileadmin/Internet/css/print.css
    file2.media = print
}

Kategorie: Typoscript
Antwort auf/zuklappen

Überschriften H1, H2, H3 aus RTE entfernen

#Entfernt H1, H2, H3  aus dem RTE
RTE.default.hidePStyleItems = h1,h2,h3

Kategorie: RTE
Antwort auf/zuklappen

RTE: Kein P-tag wrap in TABELLEN

Folgendes ins TS SETUP eintragen:

#P Tag Ummantelung in Tabellen verhindern:
lib.parseFunc_RTE.externalBlocks = ul,ol,table
#nochmaliges parsen von tabellenzellen auschalten
lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.
callRecursive = 0
#nachträgliches ermöglichen von Links in Tabellenzellen
lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.
stdWrap.parseFunc {
        makelinks = 1
        makelinks.http.keep = scheme,path,query
        makelinks.mailto.keep = path
        tags {
                link = TEXT
                link {
                 current = 1
                 typolink.parameter.data = parameters : allParams
                }
       }
}

Kategorie: RTE
Antwort auf/zuklappen

RTE: Default Alt/Title-Text bei Links entfernen

RTE.classesAnchor {
      internalLink {
              altText =
              titleText =
      }
       externalLink {
              altText =
              titleText =  
        }
       externalLinkInNewWindow {
              altText =
              titleText =  
        }
        internalLinkInNewWindow {
              altText =
              titleText =  
        }
        download {
              altText =
              titleText =  
       }
        mail {
              altText =
              titleText =  
        } 
}

Kategorie: RTE
Antwort auf/zuklappen

Zeilenumbruch statt Absatz einfügen

Mit ENTER wird ein Absatz eingefügt.

Taste "SHIFT" (Großschreibungstaste) gedrückt halten und ENTER:
fügt einen einfachen Zeilenumbruch ein

Kategorie: RTE
Antwort auf/zuklappen

News: Cache automatisch leeren

Unter "Seiteneigenschaften > Optionen > TSconfig"  des News-Sysfolders, der die Newsdatensätze enthält folgendes einfügen:


TCEMAIN.clearCacheCmd = 1,2,3

1,2,3 steht für die Seiten ID's der Seiten auf denen sich ein News-Plugin befindet.

 

 

Kategorie: Erweiterungen
Antwort auf/zuklappen

Wenn keine News vorhanden, soll Message "Keine News in dieser Ansicht." NICHT erscheinen

#wenn keine News vorhanden soll Text "Keine News in dieser Ansicht." nicht erscheinen
plugin.tt_news {
 _LOCAL_LANG.de.noNewsToListMsg = <div style="display: none"></div>"
 _LOCAL_LANG.en.noNewsToListMsg = "<span style="display: none"></span>"
 _LOCAL_LANG.default.noNewsToListMsg = 
}

Kategorie: Erweiterungen
Antwort auf/zuklappen

Printlink + RealUrl + News Detail

In localconf.php:

...

  'preVars' => array (
   array (
                'GETvar' => 'no_cache',
                'valueMap' => array (
                    'no_cache' => '1',
                ),
                'noMatch' => 'bypass',
            ),
   
   array (
    'GETvar' => 'type',
    'valueMap' => array (
     'print' => '98',
     ),
    'noMatch' => 'bypass'
   ),
   array (
    'GETvar' => 'L',
    'valueMap' => array(
     'de' => 0,
     'en' => 2,
    ),
    'noMatch' => 'bypass',
   ),
  ),
....

UND

....

        'fileName' => array (
   // add .html suffix to the end of the path generated
   'defaultToHTMLsuffixOnPrev' => 1,

            'index' => array (
    'print.html' => array(
        'keyValues' => array (
          'type' => '98',
        ),
       ),
    
            ),
        ),
...

Als Printlink Erweiterung as_printlink (die funktioniert auch mit REALURL problemlos)

 

Kategorie: REALURL, Erweiterungen
Antwort auf/zuklappen

damit class-Attribut für table im RTE erhalten bleibt

RTE table class fix: damit class-Attribut für table im RTE erhalten bleibt und nicht durch contenttable ersetzt wird, folgende Zeile ins TS template Setup:
lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class.list >

Kategorie: RTE
Antwort auf/zuklappen

Suche auf bestimmten Bereich des Seitenbaums einschränken

#123 ist die Page ID des Bereichs der durchsucht werden soll
plugin.tx_indexedsearch._DEFAULT_PI_VARS.sections = rl1_123

Kategorie: Erweiterungen
Antwort auf/zuklappen

Powermail: doppelte Einträge verhindern

Doppelte Einträge entstehen, wenn das Powermail-Formular irrtümlicherweise zweimal hintereinander gesendet wird (Doppelklick oder Seitenaktualisierung) 

LÖSUNG:
Folgende Zeile in den CONSTANTS hinzufügen

plugin.powermail.enable.unique = uid1
(uid1 steht für den Wert des Emailfeldes. Nummer im Formular nachsehen!) 

Kategorie: Erweiterungen
Antwort auf/zuklappen

Powermail: Absendername und Absenderadresse im Bestätigungsemail überschreiben

Name und Adresse des Absenders im Bestätigungsemail überschreiben:

ins SETUP der Formularseite:

plugin.tx_powermail_pi1 {
    email {
        sender_mail {
            sender.name = TEXT
            sender.name.value = Ihr Name
            
            sender.email = TEXT
            sender.email.value = email@einfach-ist-schön.at
        }
    }

Kategorie: Erweiterungen
Antwort auf/zuklappen

Powermail: Anmeldungsdaten als .csv oder .xls exportieren

1.) Zeitfilter in TSCONFIG der Startseite eintragen:
tx_powermail_mod1.config {
   list.filterstart = 2010-01-01 00:00
}

2.) Powermail im Menü WEB links auswählen

3.) Im Seitenbaum Formularseite auswählen

4.) Oben rechts stehen die Daten als CSV, XLS oder Tabelle zum Download bereit.

 

Kategorie: Erweiterungen