TYPO3 6.1 Eigener Bildeffekt hinzufügen

In einem Projekt sollte der TYPO3-Redakteur die Bilder im Backend zurechtschneiden können.
Über das Feld „Höhe“ und „Breite“ wird die gewünschte Bildgröße definiert welche dann mittig aus dem Bild ausgeschnitten wird.
Es werden dabei nur Bilder beschnitten, die größer sind als die gewünschte Zielgröße.
Folgende Schritte sind für einen neuen Bildeffekt nötig:
Im TSConfig der Seiteneigenschaften muss folgender Eintrag hinzugefügt werden:

TCEFORM.tt_content.image_effects.addItems.30 = Zuschneiden

Dadurch wird im Auswahlmenü „Effekt“ im Tab „Erscheinungsbild“ ein weiterer Punkt namens „Zuschneiden“ hinzugefügt.
Damit dieser auch funktioniert, wenn er ausgewählt wird, muss noch folgender Code in das TypoScript-Template integriert werden:

# Bildeffekt "Zuschneiden"
temp.image < tt_content.image.20
tt_content.image.20 = CASE
tt_content.image.20 {
    key.field = image_effects
    default < temp.image
    30 < temp.image
    30 {
        equalH >
        1.file {
            width {
                append = TEXT
                append.value = c
            }
            height {
                append = TEXT
                append.value = c
                field = imageheight
            }
        }
    }
}
tt_content.textpic.20 >
tt_content.textpic.20 < tt_content.image.20
tt_content.textpic.20 {
    default {
        text.10 = COA
        text.10 {
            if.value = 24
            if.isGreaterThan.field = imageorient
            10 = < lib.stdheader
            10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
        }
        text.20 = < tt_content.text.20
        text.wrap = <div class="csc-textpic-text">|</div>
    }
    30 < tt_content.image.20.30
    30 {
        text.10 = COA
        text.10 {
            if.value = 24
            if.isGreaterThan.field = imageorient
            10 = < lib.stdheader
            10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
        }
        text.20 = < tt_content.text.20
        text.wrap = <div class="csc-textpic-text">|</div>
    }
}

Bei meiner Recherche zu diesem Thema bin ich auf verschiedene Foreneinträge und Snippets gestoßen, allerdings brachte keiner dieser Einträge den gewünschten Erfolg.
Von da her hoffe ich, dass dieser Artikel dem einen oder anderen weiter hilft.

[Update 11.02. 2014]
Der bisherige Code wurde erweitert und durch einen 6.2 kompatiblen Code ersetzt.

 

Gewähltes Layout in TYPO3 als CSS-Klasse rendern

Wird in einem TYPO3-Inhaltselement ein „Layout des Inhaltselements“ ausgewählt passiert in der Standardinstallation nichts weiter.
Mit folgendem Typoscript wird die ID des gewählten Layouts als CSS-Klasse in das umschließende Element gerendert:

# Layout bei Inhaltselement zusätzlich in div wrappen
tt_content.stdWrap.innerWrap.cObject.default {
 20.10.noTrimWrap = || layout-{field:layout} |
 20.10.insertData = 1
}

 

TYPO3 6.1 Erstellen von Inhalt nicht möglich

Heute bin ich auf folgendes Problem gestoßen:
Im TYPO3-Backend wollte ich in der Seiten-Ansicht ein neues Inhaltselement anlegen. Nach einem Klick auf das entsprechende Icon wurde die Seite jedoch leer und nichts weiter passierte.
Nach einer kurzen Recherche im Apache-Errorlog fand ich folgenden Fehler:

PHP Fatal error:  Call to undefined method TYPO3\\CMS\\Core\\Utility\\General
Utility::readLLXMLfile() in /srv/www/htdocs/typo3conf/ext/we_gmanfahrt/pi1/
class.tx_wegmanfahrt_pi1_wizicon.php on line 61, referer: ...

Es stellte sich heraus, dass die Extension „we_gmanfahrt“ eine veraltete Funktion namens „t3lib_div::readLLXMLfile()“ verwendete.
Diese Funktion ist seit TYPO3 4.6 veraltet und wurde in Version 6.0 entfernt. Seit dem sollte die Funktion „t3lib_l10n_parser_Llxml::getParsedData()“ verwendet werden.
Gesagt, getan.
Die Übergabeparameter sind gleich geblieben und somit sollte durch einen Tausch der Funktionen das Problem behoben sein.
Sollte…den das Phänomen beim Anlegen eines neuen Inhaltselements blieb.
Im Errorlog fand sich nun ein neuer Eintrag:

PHP Fatal error:  Call to undefined method tx_wegmanfahrt_pi1_wizicon::
getCharset() in /srv/www/typo3/typo3_src-6.1.0/typo3/sysext/core/Classes/
Localization/Parser/LocallangXmlParser.php on line 54, referer: ...

Wie sich herausstellte, hängt dies mit dem „neuen“ TYPO3 zusammen. Eine Lösung wurde von Thomas Dudzak im Bugtracker bereitgestellt:

/**
  * Reads the [extDir]/locallang.xml and returns the $LOCAL_LANG array found in that file.
  *
  * @return    The        array with language labels
  */
  function includeLocalLang()    {
    $llFile = t3lib_extMgm::extPath('td_calendar').'locallang.xml';
    $version =  class_exists('t3lib_utility_VersionNumber')
              ? t3lib_utility_VersionNumber::convertVersionNumberToInteger(TYPO3_version)
              : t3lib_div::int_from_ver(TYPO3_version);
    if ($version >= 4007000) {
      $object = t3lib_div::makeInstance('t3lib_l10n_parser_Llxml');
      $LOCAL_LANG =  $object->getParsedData($llFile, $GLOBALS['LANG']->lang);
    } else {
      $LOCAL_LANG =  t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang);
    }
    return $LOCAL_LANG;
  }

 

TYPO3 Update Einzeiler

Mit folgendem Konsolenkommando kann ein vorhandenes TYPO3 6.0 auf 6.0.5 aktualisiert werden:

wget get.typo3.org/6.0 -O update.tgz && tar xzf update.tgz && rm update.tgz && chown -R wwwrun:www typo3_src-6.0.5 && rm typo3_src-6.0 && ln -s typo3_src-6.0.5 typo3_src-6.0

Voraussetzung hierfür ist, dass Sie in der Konsole über die entsprechenden Berechtigungen verfügen. Auch sollten Sie sich in dem Verzeichnis befinden, in dem sich der bisherige TYPO3-Sourcen Ordner befindet.
Bevor Ihr den Einzeiler ausführt, passt bitte die einzelnen Kommandos an eure Serverumgebung an! Ich übernehme keine Garantie, dass dieser Einzeiler bei jedem korrekt funktioniert!

 

„Seite anzeigen“ im News-Sysfolder funktioniert nicht

Wenn News in einem Newsartikel-Ordner erstellt werden, funktioniert die Vorschau-Funktion nicht. Klickt ein Redakteur auf „Dokument speichern und Webseite anzeigen“ wird die 404-Fehlerseite angezeigt, da es sich um einen Sysfolder und nicht um eine Seite handelt. Wird jedoch in den Seiteneigenschaften des Sysfolders, unter „Ressourcen“, „TypoScript-Konfiguration“ die nachfolgende Zeile integriert, wird beim Speichern und Anzeigen die entsprechende Seite angezeigt.

tx_ttnews.singlePid = XXX

XXX muss hierbei durch die UID der Seite ersetzt werden, auf der die Detailansicht der News hinterlegt ist.

 

TYPO3 RTE – cellpadding und cellspacing Attribut aus table-Tag entfernen

Wenn im RTE eine Tabelle erstellt wird, enthält diese nach dem Speichern die Attribute „cellpadding“ und „cellspacing“. Diese Attribute sind jedoch veraltet und sollten per CSS gesetzt werden.

Aus diesem Grund kann über die Seiten-TSConfig das Verhalten des RTE’s angepasst werden:

RTE.default.proc {
exitHTMLparser_db = 1
	exitHTMLparser_db {
		tags {
			table.fixAttrib.cellpadding.unset = 1
			table.fixAttrib.cellspacing.unset = 1
		}
	}
}

Mit diesem Eintrag wird beim Speichern einer RTE-Tabelle die Attribute cellpadding und cellspacing aus dem table-Tag entfernt und somit nicht in der Datenbank gespeichert.

 

TYPO3 RTE eigener CSS-Stil für Tabellen

Seit der TYPO3 Version 4.6 hat sich einiges an der RTE-Konfiguration geändert, manche Eigenschaften sind veraltet und werden in der Version 4.8 entfernt. Eine Liste findet sich unter http://forge.typo3.org/issues/28325

Um einen eigenen CSS-Stil für Tabellen im RTE festzulegen muss folgendes gesetzt werden:

im TSConfig der Hauptseite:

RTE.default.contentCSS = pfad/zur/rte.css
RTE.default.buttons.blockstyle.tags.table.allowedClasses := addToList(tabellenstil1)
RTE.default.proc.allowedClasses := addToList(tabellenstil1)
RTE.default.buttons.blockstyle.tags.table.allowedClasses := addToList(tabellenstil2)
RTE.default.proc.allowedClasses := addToList(tabellenstil2)

in der in Zeile 1 angegebenen CSS-Datei (als Beispiel):

table.tabellenstil1{border:none;border-collapse:collapse;margin:0 0 30px;width:100%;}
table.tabellenstil1 th{background:none;border:none;color:#272627;font-weight:700;padding:3px 7px;text-align:left;}
table.tabellenstil1 td{border:none;color:#272627;padding:3px 7px;}
table.tabellenstil2{border:1px solid #272627;border-collapse:collapse;margin:0 0 30px;width:100%;}
table.tabellenstil2 th{background:#272627;border:1px solid #272627;color:#fff;font-weight:700;padding:3px 7px;text-align:left;}
table.tabellenstil2 td{border:1px solid #272627;color:#272627;padding:3px 7px;}

 

Mehr Zeichen im Dateinamen in der TYPO3 Dateiliste anzeigen

In der Dateiliste werden die Zeichen des Dateinamens standardmäßig nach 30 Zeichen abgeschnitten.
Existieren jedoch mehrer Dateien mit ähnlichem Namen, ist es nur über den Tooltip möglich, sich den ganzen Dateinamen anzeigen zu lassen.
Die Zeichenanzahl lässt sich glücklicherweise pro Backenuser individuell einstellen.
Dazu findet sich unter „Benutzerwerkzeuge“ -> „Einstellungen“ -> Reiter „Beim Start“ -> „Maximale Titellänge“ ein Feld, in dem die Titellänge angepasst werden kann.
Ändert man hier den Wert auf „50“, werden die Dateinamen nach 50 Zeichen gekürzt.

Zu beachten gilt:
Dadurch ändert sich auch die Titellänge der Seiten im Seitenbaum!

 

we_google_analytics für mehrsprachige Websites

Die von mir entwickelte TYPO3 Extension we_google_analytics integriert die Webstatistik von Google auf einfach Art und Weise.
Mit nur einer Zeile Typoskript lässt sich die Extension in jede TYPO3 Website integrieren.

Bei mehrsprachigen Websites besteht hin und wieder der Wunsch, die verschiedenen Sprachen einzeln in Google Analytics zu tracken.
Mit Hilfe von TypoScript (im speziellen die Conditions), lässt sich der Wunsch einfach realisieren.

Zuerst wird die Extension ins TYPO3-System integriert.
Anschließend wird mit einer Zeile TypoScript der Google Analytics Code in die Website integriert:

config.tx_we_google_analytics.account = UA-123456-7

Jetzt erweitern wir die TypoScript Zeile so, dass bei einer weiteren Sprache (Language ID 1) ein anderer Google Analytics Account verwendet wird.

config.tx_we_google_analytics.account = UA-123456-7
[globalVar = GP:L = 1]
config.tx_we_google_analytics.account = UA-987654-3
[end]

Werden die weiteren Sprachen über eigene URLs angesprochen, so lassen sich auch damit die Konfigurationen der Extension we_google_analytics anpassen.

config.tx_we_google_analytics.account = UA-123456-7
[globalString = IENV:HTTP_HOST = www.firma.de]
config.tx_we_google_analytics.account = UA-987654-3
[globalString = IENV:HTTP_HOST = www.firma.es]
config.tx_we_google_analytics.account = UA-987654-2
[globalString = IENV:HTTP_HOST = www.firma.fr]
config.tx_we_google_analytics.account = UA-987654-1
[end]

Sollte euch der Beitrag geholfen haben, würde ich mich freuen, wenn Ihr mir einen Kommentar hinterlasst. Auch Feedback zur Extension ist gerne gesehen.

 

News werden nur nach dem Leeren des Cache angezeigt

Beim einrichten der tt_news Extension ist es schon öfters vorgekommen, das die Newsartikel beim ersten Laden angezeigt werden, dann aber verschwinden. Wird im TYPO3-Backend der Cache geleert, erscheinen die Newsartikel für kurze Zeit wieder.

Eine undurchdachte Lösung wäre, in den Seiteneigenschaften unter „Verhalten“ einen Haken bei „Cache deaktivieren“ zu setzen. Dies bringt allerdings einige Nachteile mit sich (z.B. kann die Seite dann nicht vom Crawler indexiert werden).

Die bessere richtige Lösung ist, im Root-Template das statische Template der tt_news Extension „News settings (tt_news)“ zu integrieren.