blog.bartlweb - a technologist's external brain

Thema: Webentwicklung

Typo3 Content und xHTML Ausgabe anpassen

Standardmäßig ist die Ausgabe von Typo3 über CSS-Styled-Content etwas überladen und oft mit unnötigen Zusätzen versehen. Diese Standardkonfiguration räumt die Ausgabe auf und liefert damit einen sauberen HTML-Code.

CSS-Styled-Content anpassen

#
# configure css_styled_content
#

# remove standard css
plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE >

# remove class from p-tags
lib.parseFunc_RTE {
  nonTypoTagStdWrap.encapsLines {
    addAttributes.P.class =
  }
}

lib.stdheader { 
  # remove div-tags around headlines
  stdWrap.dataWrap =
 
  # set german date format
  5.date = j.n.Y

  # remove class from hx-tags
  10.1.fontTag = <h1{register:headerStyle}>|</h1>
  10.2.fontTag = <h2{register:headerStyle}>|</h2>
  10.3.fontTag = <h3{register:headerStyle}>|</h3>
  10.4.fontTag = <h4{register:headerStyle}>|</h4>
  10.5.fontTag = <h5{register:headerStyle}>|</h5>
}

tt-content Ausgabe anpassen

#
# configure tt_content output
#

tt_content {
  # remove clear.gif
  stdWrap.space=0

Ausgabe des Seitentitels in Typo3 anpassen

Typo3 generiert standardmäßig automatisch den Seitentitel aus dem Titel der aufgerufenen Seite. Um den Titel seinen eigenen Vorstellungen anzupassen ist ein wenig TypoScript erforderlich.

config-Array anpassen

config {
  #disable page title, will be written manually to header
  noPageTitle = 1
}

headerData anpassen

# configure pagetitle
page.headerData {
  10 = TEXT
  10.field = subtitle // title
  10.htmlSpecialChars = 1
  10.wrap = <title>|&nbsp;- www.domain.com</title>
}

eigene Textkonvertierungsfunktion in die Typo3-Ausgabe einbauen

Es ist möglich eine eigene PHP-Funktion in Typo3 einzubinden die vor der Ausgabe des Contents noch auf diesen angewendet wird, so ist es z.B. möglich eine Plaintext-Version der Webseite für einen Newsletter anzubieten.

TypoScript

includeLibs.convert_script = fileadmin/convert.php
....
10.text.postUserFunc = user_convert->plaintext

PHP

<?php
class user_convert {
  function plaintext($content,$conf) {
    //replace br with newline
    $text = preg_replace('/\<br(\s*)?\/?\> /i', "\n", $content);

    // replace html tags
    $text = preg_replace('@<[\/\!]*?[^<>]*?>@si','', $text);
        
    // replace non-breaking space
    $text = str_replace('&nbsp;', ' ', $text);
        
    // linebreak after x characters
    $text = wordwrap($text, 76);
        
    //remove empty lines or spaces at the beginning of the text
    $text = trim($text);

Bilder nicht direkt in HTML-Mails integrieren

Werden Bilder direkt in die HTML-Mails integriert, könne diese von Mailservern leichter als Spam identifiziert werden.

Daher Bilder nicht in HTML-Mails einbetten sondern auf einen Server legen und mit absoluten Urls im Mail auf diese verweisen.

Automatisch Seitencaches bei Änderungen im Typo3-Backend löschen

Bei vielen Erweiterungen wie z.B. tt_news werden die Content-Elemente in einem Sysfolder angelegt und damit diese dann auf der Webseite erscheinen muss zunächst der Cache jener Seite die das PlugIn enthält gelöscht werden.

Mit folgenden Snippet, dass im TSconfig des Sysfolder angelegt wird, wird bei Änderungen im Sysfolder automatisch der Cache einer der angegebenen Seiten gelöscht.

TCEMAIN {
  clearCacheCmd = 1,43,44,45
}

PHP Shorttags aktivieren

Standardmäßig führt PHP nur Code zwischen den Tags <?php ... ?> aus. Es gibt jedoch auch die Möglichkeit diese Tags in der Kurzform <? ... ?> , den Shorttags, zu schreiben. Generell sollten Shorttags jedoch vermieden werden.

Um Shorttags dennoch zu aktivieren editiern Sie die PHP-Konfiguriationsdatei "php.ini" und starten den Webserver neu.

short_open_tag = On

PHP Error Level

Es ist in PHP möglich den Error-Level (also die Ausgabe von Fehlermeldungen) global in der "php.ini" oder lokal in jedem File zu definieren. Um die Fehlerausgabe für eine PHP-Datei  zu ändern fügen Sie am Anfang dieser einen der folgenden Befehle ein:

error_reporting(E_ERROR); error_reporting(E_ALL);

Mailfunktion einer PHP-Installation testen

Um schnell die Mailfunktionalität einer PHP-Installation zu testen, verwenden Sie den unteren PHP-Code. Kopieren Sie diesen in eine Datei mit der Endung php, ändern Sie die Mail-Adresse "$mail" und legen Sie die Datei auf den Webserver, die Sie dann im Browser aufrufen.

<?php
  $mail = "webmaster@domain.com";
  $subject = "Mailtest";
  $content = "You have tested your webserver successfully in sending mails.";

  echo "<h1>Mailtest</h1>";
  echo "=====================================================</br>";
  echo "Recipient: ".$mail."</br>";
  echo "Subject: ".$subject."</br>";
  echo "Content: ".$content."</br>";
  echo "=====================================================</br></br>";

  mail($mail, $subject, $content);

  echo "Mail-Command was executed, please check your Inbox for success ...</br>";
?>

TemplaVoila speichert Mappings nicht

Sollte TemplaVoila das Mapping nicht speichern hängt dies oft mit unterschiedlichen Codierungen zusammen. Gerade wenn Typo3 im UTF-8 Modus läuft sind einige Punkte zu beachten.

  • stellen Sie sicher, dass das Templates UTF-8 codiert sind
  • stellen Sie sicher, dass die Datenbank UTF-8 codiert ist
  • stellen Sie sicher, dass das Backend auf UTF-8 läuft

Typo3 Backend Felder deaktivieren oder vorbelegen

Viele Extensions oder auch der Typo3-Core bieten oft viel mehr Felder in den Backend-Dialogen diverser Content-Elemente an als für viele Einsatzwecke notwendig. Die meisten können über die Benuzterverwaltung und die Zugriffsregeln deaktiviert werden. Scheint ein Feld dort jedoch nicht auf gibt es die Möglichkeit dieses per TypoScript im TS-Config-Feld der aktuellen Seite zu deaktiveren. Im gleichen Zuge gibt es aber auch die Möglichkeit Felder mit Default-Werten vorzubelegen.

Ersetzen Sie DBTabelle und DBField durch den Datenbanknahme und den Namen des Datenbankfelds, jeder beliebigen Extension.

Feld ausblenden

TCEFORM.DBTabelle.DBField.disabled = 1

Feld vorbelegeben

TCAdefaults.DBTabelle.DBField= 1