Zum Inhalt springen

Typo3 und xhtml

Erstellt am 29. Januar 2003 · 16 Antworten · letzte Antwort am 26. April 2004

Tags: Frage

beate76 ·

Hallo, ich arbeite seit 2 Tagen mit Typo3.

Was ich weder hier im Forum noch in einer Doku (konnte leider noch nicht alle lesen) gefunden habe:
Wie sieht die Unterstützung von Typo3 aus, wenn man xhtml-konform programmieren will?
Das scheint mir ja fast unmöglich!
Den Header hab ich schon abgeändert, andere DTD rein, aber z.b. die ganzen Imagetags, die automatisch erzeugt werden, da habe ich ja kaum Einfluß drauf!

Gibt es hierzu bereits irgendwelche Überlegungen/Informationen?

Vielen Dank,
Beate

sacha ·

Hi,

mein Ziel ist es, mit Typo barrierefreie Webseiten zu generieren. Ich habe die Erfahrung gemacht, dass man fast alles anpassen kann. Auch diese fuerchterlichen <BR> und <font...> tags. Aber es dauert seine Zeit, bis man weiss, wo sich die ganzen Einstellungen versteckt haben.

Interessant ist bestimmt auch die css-styled-content Extension, die du ueber den Extension-Manager herunterladen kannst.

Grundsaetzlich sind die Typo3-Entwickler den Themen xhtml und barrierefreiheit gegenueber sehr offen - es hat nur keine besonders hohe Prio weil es leider noch nicht so viele Leute interessiert.

Vielleicht koennen wir ja eine Arbeitsgruppe zu dem Thema gruenden.

Ciao,

Sacha

SolarUwe ·

Hi beate76,

da kann ich Sacha nur recht geben: Mit entsprechend viel Herumprobieren und Anpassen, lässt sich praktisch alles auch XHTML-konform hinbekommen. Als allererstes muss man dazu unter "include static" das "cSet (default)" rausschmeissen und dafür "cSet stylesheet" verwenden. Das sieht dann schon viel besser aus. Aber Version 3.5b3 gibt es dann auch die Möglichkeit config.xhtml_cleaning zu verwenden - das sorgt für Kleinschreibung aller Tags und den End-Slash bei leeren Containern, z.B. <br />. Mehr zu xhtml_cleaning unter http://typo3.org/doc+M5a500a144e2.0.html

M.E. verliert man dabei allerdings ein bisschen an Komfort, weil die üblichen Workarounds eines CMS (blind.gifs etc.) eben nicht mit einer wirklich sauberen Programmierung kompatibel sind.

Im Dezember hat es in der engl. Newsgroup eine interessante Diskussion zum Themal XHTML gegeben, an der auch Sacha beteiligt war: http://typo3.org/1422+M5ede10d4d7d.0.html

Ich bin an der Weiterentwicklung in dieser Hinsicht sehr interessiert, habe allerdings selbst keine Zeit daran zu arbeiten.

Gruß UWE.

beate76 ·

bis man weiss, wo sich die ganzen Einstellungen versteckt haben.

Da Stimm ich dir voll zu, bis ich erstmal verstanden habe, warum mein header ganz anders aussieht als im template....
Mit den CMSen, mit denen ich vorher gearbeitet habe, war das eben einfacher.

zum Thema zurück:
Die genannten Links waren sehr interessant, v.a. was Kasper darüber denkt.
Leider scheitere ich schon am umsetzen der vorgeschlagenenen Einstellungen... aber ich werde das noch finden #paralyzed#
(habe auch schon angefangen, im quelltext <BR> durch <br /> zu ersetzen. falls ich das durchziehe, wem soll ich es zukommen lassen?)

Grüße Beate

sacha ·
beate76 schrieb

Leider scheitere ich schon am umsetzen der vorgeschlagenenen Einstellungen... aber ich werde das noch finden #paralyzed#
(habe auch schon angefangen, im quelltext <BR> durch <br /> zu ersetzen. falls ich das durchziehe, wem soll ich es zukommen lassen?)

du veraenderst den Typo-Sourcecode? Das wird dann aber problematisch, wenn eine neue Version erscheint.

Ich versuche mal, das mit dem CSet Stylesheet zu erklaeren:

in deinem Template findest du das im Bereich include static:
Bild: unlimited-vision.net/cset.gif

Die <BR> kannst du ueber den TypoSkript Object Manger veraendern.

Dazu klickst du links im Modul Web auf Template
Bild: unlimited-vision.net/web.gif

Dann oben TypoSkript Object Browser waehlen:
Bild: unlimited-vision.net/tsob_top.gif

Danach unten Suchbegriff eingeben, enable Ojekt Links anhaken und auf Search klicken (nicht ENTER drucken):
Bild: unlimited-vision.net/tsob.gif

Dann gehst du die einzelnen Werte durch und korrigierst sie. Wenn du danach ins Template schaust, wirst du sehen, dass alle Korrekturen dort eingetragen worden sind.

Damit werden die Typo-Standardwerte von deinem Template ueberschrieben und die Korrekturen bleiben auch nach einem Update erhalten.

Hoffe das war verstaendlich.

Ciao,

Sacha

beate76 ·

Das nenn ich mal eine gute Anleitung, hat funktioniert 😃
Danke!

(Wenn nur alle Funktionen so gut dokumentiert wären...)

sacha ·
beate76 schrieb

(Wenn nur alle Funktionen so gut dokumentiert wären...)

man arbeitet dran...

Wie hast du denn die DTD gesetzt?

Ich wuerde gerne so etwas machen:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

beate76 ·

So ähnlich habe ich meine DTD auch definiert, in der datei
/tslib/class.tslib_pagegen.php.
Aber das Tag "<meta http-equiv="Content-Type"....>"
ist dort ja schon angegeben, must es nur noch xhtml-konform machen.

Noch was zu den Ersetzungen von oben:
Wenn ich nun ein neues template anlege, müsste ich den ganzen spaß nochmal machen, wenn ich das template nicht kopiere, seh ich das richtig???

sacha ·
beate76 schrieb

So ähnlich habe ich meine DTD auch definiert, in der datei
/tslib/class.tslib_pagegen.php.
Aber das Tag "<meta http-equiv="Content-Type"....>"
ist dort ja schon angegeben, must es nur noch xhtml-konform machen.

geht das nicht auch irgendwie ueber TypoSkript? Wenn moeglich, moechte ich nicht so gerne in den Sourcen etwas aendern.

Noch was zu den Ersetzungen von oben:
Wenn ich nun ein neues template anlege, müsste ich den ganzen spaß nochmal machen, wenn ich das template nicht kopiere, seh ich das richtig???

Du kannst ja die vom TS OjectBrowser eingefuegten Werte unter constants und setup kopieren und im neuen Template wieder einfuegen.[/quote]

beate76 ·

geht das nicht auch irgendwie ueber TypoSkript?

Das darst du mich nicht fragen...

Du kannst ja die vom TS OjectBrowser eingefuegten Werte...

Danke, stimmt, da hätt ich auch selbst drauf kommen können!

SolarUwe ·

Hallo beate76 und Sacha,

die einzige brauchbare Lösung, die ich gefunden habe, ist es, den gesamten head-Bereich zu deaktivieren. Die DTD und den ganzen <head>-Bereich habe ich in meinem HTML-Template stehen. Der Seitentitel wird durch einen Marker wieder eingefügt. Das ist zwar alles etwas umständlich, aber sonst kommt man meines Wissens an bestimmte Dinge nicht ran...

Vielleicht sollten wir doch irgendwo einmal eine Sammlung von "sauberen" Code anfangen - welche Einstellungen muss man vornehmen, um möglichst na am Ideal dran zu sein.

Wie gesagt, viel Zeit hätte ich dafür nicht. Aber selbst auch schon einiges rumprobiert - mit unterschiedlichem Erfolg. Wäre schön, wenn wir das irgendwo zusammentragen könnten.

Was meint Ihr?

Gruß
UWE.

sacha ·

Hi,

gute Idee. Schreiben wir es einfach hier rein und ich fasse es dann als howto fuer die Typo3.org Seite (http://typo3.org/1422+M582c502c6f5.0.html) zusammen.

btw.: ich habe gerade die Datei class.t3lib_parsehtml.php angepasst und an Kasper geschickt.

Jezt wird bei aktiviertem xhtml_cleaning auch link und meta mit " />" beendet und alle anderen relevanten Tags auch mit " />" und nicht mehr mit "/>".

Ausserdem wird eine fehlende type-Angabe bei Java-Scripts ergaenzt.

Ich weiss nicht, ob Kasper dass ins naechste offizielle Release aufnimmt, aber ihr koennt euch die Datei hier ziehen:

http://www.dog-sharing.de/class.t3lib_parsehtml.php.txt

Mal sehen, vielleicht kann ich die dtd darueber ja auch noch aendern, dann muesste man eigentlich schon durch den w3c-validator kommen.

Ciao,

Sacha

alchemikus ·

Hallo,

wir möchten unsere neue Institutsseite über Typo3 generieren. Unser Entscheidungsteam hat sich für eine Frameseite ausgesprochen. Und der Code soll sauber sein. Ich habe ziemlich viel gesucht und ausprobiert, schließlich bin ich für uns auf folgende Übergangslösung gekommen, die Euch vielleicht auch weiterhilft:

Der Dokumentenkopf wird in unserer Version (3.5.0) in tslib/class.tslib_pagegen.php generiert, die dafür zuständige Funktion heißt renderContentWithHeader (irgendwo bei Zeile 236).

Ich habe die Funktion folgendermaßen ergänzt - das Original ist zum Vergleich unten drangehängt:

$GLOBALS["TSFE"]->content="";
/* Alchemikus add for different DOCTYPEs
Set PAGE-Element to your specific number, do nothing for HTML 4.01 Transitional
Default-type is HTML 4.01 Transitional
 1: HTML 4.01 Frameset
 2: HTML 4.01 Strict
 3: XHTML 1.0 Strict
 4: XHTML 1.0 Transitional
 5: XHTML 1.0 Frameset

Example:
 ...
 outer_frameset = PAGE
 outer_frameset.DTD = 1
 ...
*/
switch ($GLOBALS["TSFE"]->pSetup["DTD"])        {
case 1:
$doctype_text ='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
        "http://www.w3.org/TR/html4/frameset.dtd">';
break;
case 2:
$doctype_text ='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">';
break;
case 3:
$doctype_text ='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
break;
case 4:
$doctype_text ='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
break;
case 5:
$doctype_text ='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">';
break;
default:
$doctype_text ='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">';
                }

                $GLOBALS["TSFE"]->content.=$doctype_text.'
<html>
<head>
<!-- '.$customContent.'
        This website is brought to you by Typo3 - get.content.right
        Typo3 is a free open source Content Management Framework
        created by Kasper Skaarhoej and licensed under GNU/GPL.
        Information and contribution at http://www.typo3.com
-->
';
// end of Alchemikus add for different DOCTYPEs

/* Original Head:
$GLOBALS["TSFE"]->content.='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- '.$customContent.'
        This website is brought to you by Typo3 - get.content.right
        Typo3 is a free open source Content Management Framework
        created by Kasper Skaarhoej and licensed under GNU/GPL.
        Information and contribution at http://www.typo3.com
-->
';

End of original */

Im Setup des Templates kann dann einem PAGE-Element über die Variable DTD entsprechend ein DOCTYPE zugewiesen werden, z.B:

...
outer_frameset = PAGE
outer_frameset.DTD = 1
...

Als Standard wird HTML 4.01 Transitional eingestellt. Die Modifikation läuft hier auf meinem localhost bislang problemlos, kommende Woche gebe ich das mal unserem Testserver mit auf den Weg...

JamesB ·

Mal eine Frage zum xhtml_cleaning:
Ich hatte das bei mir aktiviert und wollte über die PDF-Ext direkten PDF-Export bieten. Aber Pustekuchen: PHP übersteigt meine Speicherlimits von 12 MB. Also erstmal testweise hochgesetzt, aber selbst 36 MB (!!) helfen nicht. So hab' ich mich auf Fehlersuche begeben und feststellen müssen, dass das xhtml_cleaning den ganzen Speicher belegt. Als ich das dann deaktiviert hatte, klappte der PDF-Export auch mit 12 MB Speicherlimit einwandfrei.

Ist das ein Bug, der nur mir aufgefallen ist, oder ist das allgemein bekannt, dass diese Funktion so viel Speicher braucht?

JamesB

maxhb ·

Hi!
Mittlerweiloe (Version 3.6 RC1) kann man das wie folgt lösen:
Setup:

page.config.doctype = xhtml_trans

oder

page.config.doctype = xhtml_frames

Der Typ STRICT ist allerdings nicht definiert 😢

CU
maxhb

maxhb ·

Hi!

maxhb schrieb

Hi!
Der Typ STRICT ist allerdings nicht definiert 😢

Nachtrag: Seit RC2 geht auch das:

page.config.doctype = xhtml_strict

CU
maxhb