Anton: Typo3 HTML-Templates

Morgen,

ich habe mir händisch eine kleine Webseite basierend auf einem CSS-Layout erstellt. Da ist zukünftig Laien die Möglichkeit geben möchte die Inhalte dieser Webseite zu ändern, mußte ich mich für ein CM-System entscheiden. Meine Wahl ist hierbei auf Typo3 gefallen.

Die Datei "index.html" meiner händiscch erstellen Webseite würde ich gerne als html-Template für Typo3 verwenden. Demnach habe ich alle Bereiche die später dynamisch werden sollen durch die entsprechenden Platzhalter ersetzt. In meinem Fall soll zunächst mal nur der Inhaltbereich der Seite dynamisch werden. Deshalb habe ich alles innerhalb des DIV-Containers Content durch ###CONTENT### ersetzt. Um mein Template und mein zugehöriges Stylesheet einzubinden habe ich folgenden Typoscript-Code verwendet:

temp.mainTemplate = TEMPLATE
temp.mainTemplate {
template = FILE
template.file = fileadmin/template.html
}

page = PAGE
page {
typeNum = 0
bodyTag = <body>
stylesheet = fileadmin/css/main.css
10 < temp.mainTemplate
}

Quellcodemäßig macht Typo3 folgendes daraus:

  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
 <html>  
   <head>  
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
     <link rel="stylesheet" type="text/css" href="fileadmin/css/main.css" />  
     <title>home</title>  
     <meta name="generator" content="TYPO3 4.2 CMS" />  
     <script type="text/javascript" src="typo3temp/javascript_93077bb238.js">  
     </script>  
  </head>  
  
  <body>  
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">  
    <head>  
      <title></title>  
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
      <meta name="Author" content=""/>  
      <meta name="description" content=""/>  
      <link href="css/main.css" rel="stylesheet" type="text/css"/>  
    </head>  
	  
    <body>  
      <h1 id="header"><span></span>Titel der Seite</h1>  
	  
      <div id="content">  
        ###CONTENT###  
      </div>  
		  
      <ul id="navigation" class="listWithoutPoints">  
        <li><a href="#">Startseite</a></li>  
        <li><a href="contact.php">Kontakt</a></li>  
        <li><a href="imprint.html">Impressum</a></li>  
        <li><a href="gtc.html">AGB</a></li>  
        <li><a href="copyright.html">Copyright</a></li>  
      </ul>  
		  
      <address id="footer">&copy; Copyright 2008</address>  
    </body>	  
    </html>  
  </body>  
</html>  

Durch das PAGE-Objekt wird per Default ja automatisch ein Grundgerüst für die Webseite erstellt. Deshalb hat der Quellcode Redundanz. Der Headerbereich und die HTML-Tags kommen doppelt vor. Nun bin ich mit dem Headerbereich meines HTML-Templates recht zufrieden. Ich würde also diesen gerne verwenden und nicht das Grundgerüst, welche von Typo3 per default erstellt wird.

Hierzu zwei Fragen:

1.)
Ist es OK wenn ich das Grundgerüst der Seite aus meinem HTML-Template einbinde oder sollte ich aus irgendeinem Grund besser das HTML-Grundgerüst verwenden das von Typo3 automatisch generiert wird. Müßte ich dann halt per Typo3 Script entsprechend anpassen. Des weiteren würde ich dann dafür sorgen, das nichtmehr mein komplettes HTML-Template eingebunden wird, damit würde ich dann die Redundanz vermeiden.

2.)
Wie kann ich denn erreichen, das Typo3 per default kein Grundgerüst mehr erzeugt sondern stattdessen auch das Grundgerüst aus meinem HTML-Template übernimmt?

  1. Ist es OK wenn ich das Grundgerüst der Seite aus meinem HTML-Template einbinde oder sollte ich aus irgendeinem Grund besser das HTML-Grundgerüst verwenden das von Typo3 automatisch generiert wird.

    ja, das kannst du machen - disableAllHeaderCode = 1 ist dafür das nötige werkzeug - du musst allerdings dann alles nachbauen, was typo3 rund um deine seite herumwickelt und das ist bei leiben nicht wenig aufwand

    Des weiteren würde ich dann dafür sorgen, das nichtmehr mein komplettes HTML-Template eingebunden wird, damit würde ich dann die Redundanz vermeiden.

    du nutzt momentan marker - ich hab irgendwo schon mal erwähnt, dass du subparts verwenden sollst - damit kannst du dein template so lassen wie es ist und zugleich kannst du dummy-inhalt im template belassen

      
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
        <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">  
        <head>  
          <title></title>  
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
          <meta name="Author" content=""/>  
          <meta name="description" content=""/>  
          <link href="css/main.css" rel="stylesheet" type="text/css"/>  
        </head>  
      
        <body>  
    <!-- ###BODY### -->  
          <h1 id="header"><span></span>Titel der Seite</h1>  
      
          <div id="content">  
    <!-- ###CONTENT### -->  
    <p>content goes here</p>  
    <!-- ###CONTENT### -->  
          </div>  
    <!-- ###MENU### -->  
          <ul id="navigation" class="listWithoutPoints">  
            <li><a href="#">Startseite</a></li>  
            <li><a href="contact.php">Kontakt</a></li>  
            <li><a href="imprint.html">Impressum</a></li>  
            <li><a href="gtc.html">AGB</a></li>  
            <li><a href="copyright.html">Copyright</a></li>  
          </ul>  
    <!-- ###MENU### -->  
      
          <address id="footer">&copy; Copyright 2008</address>  
    <!-- ###BODY### -->  
        </body>  
        </html>
    

    das dafür nötige typoscript sieht so aus - typenum und bodytag kannst du dir sparen (sind defaultwerte):

    page = PAGE
    page.10 = TEMPLATE
    page.10 {
      template = FILE
      template.file = fileadmin/{$const.templatedir}/index.html
      workOnSubpart = BODY
      subparts {
        CONTENT < lib.CONTENT
        MENU    < lib.MENU
      }
    }

    voraussetzung ist, dass lib.CONTENT bereits mit styles.content.get befüllt ist - das machst du am besten in einem eingebundenen extension-template (also ein typoscript-include) indem du einfach lib.CONTENT < styles.content.get angibst, selbriges fürs MENU - einfach "lib.MENU = TMENU" usw um dein menü nach deinen wünschen zu erzeugen

    Wie kann ich denn erreichen, das Typo3 per default kein Grundgerüst mehr erzeugt sondern stattdessen auch das Grundgerüst aus meinem HTML-Template übernimmt?

    siehe oben, aber empfehlenswert ist das nicht

    1. »» Ist es OK wenn ich das Grundgerüst der Seite aus meinem HTML-Template einbinde oder sollte ich aus irgendeinem Grund besser das HTML-Grundgerüst verwenden das von Typo3 automatisch generiert wird.

      ja, das kannst du machen - disableAllHeaderCode = 1 ist dafür das nötige werkzeug - du musst allerdings dann alles nachbauen, was typo3 rund um deine seite herumwickelt und das ist bei leiben nicht wenig aufwand

      Was wickelt Typo3 denn alles um meine Seite herum? Ich hab mir den Quellcode angeschaut der von Typo3 generiert wurde. Da ist doch eigentlich nicht viel. Nur die html-Tags und die head-Tags. Innerhalb der head-Tags sind noch ein paar Untertags drin. Das ist doch eigentlich nicht viel, außerdem ist genau das in meinem Template ja auch schon drin.

      du nutzt momentan marker - ich hab irgendwo schon mal erwähnt, dass du subparts verwenden sollst - damit kannst du dein template so lassen wie es ist und zugleich kannst du dummy-inhalt im template belassen

      Welchen Vorteil habe ich denn, wenn ich mein Template so lassen kann wie es ist bzw. wenn ich dummy-Inhalt nutzen kann?

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
          <head>
            <title></title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            <meta name="Author" content=""/>
            <meta name="description" content=""/>
            <link href="css/main.css" rel="stylesheet" type="text/css"/>
          </head>

      <body>
      <!-- ###BODY### -->
            <h1 id="header"><span></span>Titel der Seite</h1>

      <div id="content">
      <!-- ###CONTENT### -->
      <p>content goes here</p>
      <!-- ###CONTENT### -->
            </div>
      <!-- ###MENU### -->
            <ul id="navigation" class="listWithoutPoints">
              <li><a href="#">Startseite</a></li>
              <li><a href="contact.php">Kontakt</a></li>
              <li><a href="imprint.html">Impressum</a></li>
              <li><a href="gtc.html">AGB</a></li>
              <li><a href="copyright.html">Copyright</a></li>
            </ul>
      <!-- ###MENU### -->

      <address id="footer">&copy; Copyright 2008</address>
      <!-- ###BODY### -->
          </body>
          </html>

        
      Wie ich sehe, hast du nicht nur für den Contentbereich, sondern auch für die Navigation einen Subpart verwendet. Die Navigation sieht doch eigentlich auf jeder Seite gleich aus. Demnach wäre sie dann doch eigentlich statisch und nicht dynamisch. Deshalb verstehe ich nicht, warum es überhaupt notwenidg ist die Navigation als eine subpart auszuzeichnen?  
        
      Was wäre denn z.B. für den Subpart Content als dummy-Inhalt sinnvoll?  
      
      
      1. Das ist doch eigentlich nicht viel, außerdem ist genau das in meinem Template ja auch schon drin.

        eigentlich ist es nicht viel ja - aber die sprache wird automatisch gesetzt (lang und xml-lang), der titel wird entsprechend zusammengebaut, css-files werden automatisch verlinkt (je nach extension)

        glaub mir, es ist viel arbeit, das ding nachzubauen :)

        Welchen Vorteil habe ich denn, wenn ich mein Template so lassen kann wie es ist bzw. wenn ich dummy-Inhalt nutzen kann?

        du kannst dein template fürsich testen ohne generierten inhalt zu haben - wenn das template valide ist und keine darstellungsfehler hat, das fertige nach dem parsen durch typo3 aber schon, kannst du den fehler wesentlich schneller eingrenzen

        Wie ich sehe, hast du nicht nur für den Contentbereich, sondern auch für die Navigation einen Subpart verwendet. Die Navigation sieht doch eigentlich auf jeder Seite gleich aus. Demnach wäre sie dann doch eigentlich statisch und nicht dynamisch. Deshalb verstehe ich nicht, warum es überhaupt notwenidg ist die Navigation als eine subpart auszuzeichnen?

        weil du die navigation vermutlich auf generieren willst, und zwar aus dem menübaum den du in typo3 erstellst - zudem soll der derzeitige menüpunkt anders aussehen (andere klasse, nicht verlinkt, etc.), das ist schon ein gewisser teil dynamik

        Was wäre denn z.B. für den Subpart Content als dummy-Inhalt sinnvoll?

        etwas, was alle möglichen html-elemente zeigt - ein blindtext mit listen, überschriften, tabellen usw

        sowas wie bei dem wordpress-templattes:
        http://wordpress.org/extend/themes/gear
        (das bild klicken für eine vorschau des themes)

        1. Nun gibt es ja neben der Möglichkeit sein HTML-Template über TypoScript einzubinden, auch die Alternative ganz ohne HTML-Template zu arbeiten, und sein ganzes Template nur mit Hilfe von TypoScript generieren zu lassen. Nachdem was ich bisher weiß ist es viel einfacher und auch besser, wenn ich mir HTML-Templates per TypoScript einbinde. Das komplette erstellen eines Templates nur mit TypoScript ohne HTML-Template ist viel umständlicher und komplizierter. Ist das soweit richtig?

          Wie kann ich denn TypoScript dazu veranlassen, dass es genau dieses Grundgerüst generiert:

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

          <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
            <head>
              <title>Testseite</title>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
              <meta name="Author" content="Anton"/>
              <meta name="description" content="Testseite in Typo3"/>
              <link href="css/main.css" rel="stylesheet" type="text/css"/>
            </head>
            <body>
            </body>
          </html>

          1. und sein ganzes Template nur mit Hilfe von TypoScript generieren zu lassen.

            die strukturbildenden elemente würde ich auf jeden fall aus dem template beziehen und nicht generieren lassen

            Nachdem was ich bisher weiß ist es viel einfacher und auch besser, wenn ich mir HTML-Templates per TypoScript einbinde. Das komplette erstellen eines Templates nur mit TypoScript ohne HTML-Template ist viel umständlicher und komplizierter. Ist das soweit richtig?

            jein - manche dinge sind ohne template praktikabler zu lösen - zb das menü, dieses aus einem html-template zu beziehen ist ungleich komplzierter als die unsortierte liste von einem TMENU-objekt zu generieren

            Wie kann ich denn TypoScript dazu veranlassen, dass es genau dieses Grundgerüst generiert:

            indem du dich mit der dokumentation des config und des page-objekts auseinandersetzt - exakt das untenstehende wird vermutlich nicht rauskommen, aber etwas das den selben zweck erfüllt :)

            für die erste zeile dürfte dich zb config.doctype interessieren - ebenfalls willst du ggf die xml-deklaration

            sieh einfach zu wie weit du damit kommst, wenn du einzelne dinge nicht findest, melde dich wieder - aber etwas denken solltest du selbst schon

            1. Eine Sache würde ich gerne heute noch fragen. Und zwar hab ich bezüglich einer Kleinigkeit noch ein Brett vorm Kopf. Wenn ich das verstehe, dann denke ich das ich zumindest das grobe Konzept bei der Erstellung einer Webseite mit Typo3 verstanden habe.

              1.) Ich erstelle mir eine HTML-Vorlage

              2.) Ich erstelle mir ein TypoScript-Template welches durch einbinden der HTML-Vorlage und durch den sonstigen TypoScript-Code dazu in der Lage ist meine Seite zu generieren.

              3.) Hier ist dann die Unklarheit:

              Die eigentliche Seite mit den dynamischen Elementen die später auch im Browser angezeigt wird, wird ja mit Hilfe des TypoScript-Codes und des HTML-Templates generiert. Die dynamsichen Bereiche werden erstellt indem der TypoScript-Code die Subparts durch den entsprechenden Inhalt ersetzt.

              Jetzt die eigentlichen Fragen:

              Es ist ja so, dass jeder html-Seite das gleiche html-Template zugrunde liegt. Nun soll aber nicht jede Seite den gleichen Inhalt besitzen. Demnach muss für jede Seite ja ein anderer TypoScript-Code gelten. Mache ich mir hier die Vererbung zu nutze? Ich meine erzeuge ich für root ein Template und überschreibe für jede Unterseite den Teil des Templates der dynamisch ist?

              Mal angenommen aus der Seite index.html soll der dymamische Content aus einem Bild bestehen das auf der rechten Seite plaziert ist. Das Bild soll von einem Text umflossen werden. Außerdem soll die Seite index.html eine Überschrift haben. Vorher hab ich das ja einfach entsprechend in HTML implementiert. Mir ist jetzt nicht so ganz klar wie ich das umsetze. Ich will ja erreichen, dass eine Laie die Inhalte später selbst ändern kann. Natürlich könnte ich jetzt über das Backend sowas wie "Bild mit Text" einfügen und die Elemente entsprechend positionieren. Dann stellt sich aber wieder die Frage ob mir Typo3 hier überhaupt sauberen HTML-Code generiert. Als weitere Möglichkeit könnte ich versuchen alles über TypoScript zu realisieren. Du merkst, dass mir die idealle Herangehensweise zur Lösung diese Problems noch nicht so ganz klar ist. Wäre echt nett wenn du mir hier kurz die grundsätzliche Herangehensweise erläutern könntest. Nur damit ich meine Versuche nicht in die komplett falsche Richtung starte.

              1. Es ist ja so, dass jeder html-Seite das gleiche html-Template zugrunde liegt. Nun soll aber nicht jede Seite den gleichen Inhalt besitzen. Demnach muss für jede Seite ja ein anderer TypoScript-Code gelten.

                Inhalt ist Inhalt und hat nicht viel mit der Struktur zu tun - wenn du jetzt 2-spaltigen oder 1-spaltigen Inhalt willst nutze CSS um verschiedene Layouts zu erstellen - 1x sind beide Textspalten untereinander, 1x nebeneinander - und diese bindest du dann je nach Unterseite ein (TYPO3 kennt dafür ein ensprechendes Feld in der Inhaltstabelle)

                Mache ich mir hier die Vererbung zu nutze? Ich meine erzeuge ich für root ein Template und überschreibe für jede Unterseite den Teil des Templates der dynamisch ist?

                Wenn der dynamische Teil der selben Logik folgt "hier ist das Menü" oder "hier ist der Inhalt" brauchst du nicths überschreiben und die Vererbung brechen.

                Ich will ja erreichen, dass eine Laie die Inhalte später selbst ändern kann. Natürlich könnte ich jetzt über das Backend sowas wie "Bild mit Text" einfügen und die Elemente entsprechend positionieren.

                Genau dafür ist das ja da - Text mit Bild ist das für den Endbenutzer wartbare Inhaltselment welches Text mit Bildern erzeugt.

                Dann stellt sich aber wieder die Frage ob mir Typo3 hier überhaupt sauberen HTML-Code generiert.

                Jein - css-styled-content liefert recht eigenen Code, aber auch dieser lässt sich exakt auf deine Bedürfnisse anpassen.

                Als weitere Möglichkeit könnte ich versuchen alles über TypoScript zu realisieren.

                Wenns um für den Kunden wartbaren Inhalt geht, ist ein Inhaltselement meistens das Mittel der Wahl.

                Du merkst, dass mir die idealle Herangehensweise zur Lösung diese Problems noch nicht so ganz klar ist. Wäre echt nett wenn du mir hier kurz die grundsätzliche Herangehensweise erläutern könntest. Nur damit ich meine Versuche nicht in die komplett falsche Richtung starte.

                Beschränke dich auf 1 Template, 1 Layout, 1 Erscheinungsbild - ignoriere alle Sonderformen und stell deine seite mal so online. lass an der Stelle "###CONTENT###" den Inhalt ausgeben und an der Stelle "###MENU###" dein Menü. Wenn das geschafft ist, machst du dir über die Sonderlösungen Gedanken.

                Als "Sonderlösung" würde ich z.B. "die Startseite sieht völlig anders aus" sehen. Oder "auf der Seite 'Kontakt' gibt es keinen wartbaren Text sondern Google Maps und kein Kontaktformular".

            2. »» Wie kann ich denn TypoScript dazu veranlassen, dass es genau dieses Grundgerüst generiert:

              indem du dich mit der dokumentation des config und des page-objekts auseinandersetzt - exakt das untenstehende wird vermutlich nicht rauskommen, aber etwas das den selben zweck erfüllt :)

              für die erste zeile dürfte dich zb config.doctype interessieren - ebenfalls willst du ggf die xml-deklaration

              sieh einfach zu wie weit du damit kommst, wenn du einzelne dinge nicht findest, melde dich wieder - aber etwas denken solltest du selbst schon

              So habe das jetzt mal so weit gemacht wie möglich. Hat eigentlich ganz gut geklappt. Ein paar Fragen sind allerdings noch offen. Mit googeln konnte ich mir diese nicht so wirklich beantworten:

              zunächstmal mein TypoScript:

              htmlTemplate = TEMPLATE
              htmlTemplate {
              template = FILE
              template.file = fileadmin/template.html
              workOnSubpart = DOCUMENT_BODY
              }

              page = PAGE
              page {
              config {
              xmlprologue = none
              doctype = xhtml_strict
              htmlTag_langKey = de
              renderCharset = utf-8
              }

              headerData {  
              	10 = TEXT  
              	10.value = <meta name="Author" content="Anton"/>  
              	20 = TEXT  
              	20.value = <meta name="description" content="Testseite"/>  
              }  
                
              stylesheet = fileadmin/css/main.css  
              10 < htmlTemplate  
              

              }

              Typo3 macht dann folgendes daraus:

                
              <!DOCTYPE html PUBLIC  
                "-//W3C//DTD XHTML 1.0 Strict//EN"  
                "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
                
              <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">  
                <head>  
                  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
                  <!-- This website is powered by TYPO3 - inspiring people... -->  
                  <link rel="stylesheet" type="text/css" href="fileadmin/css/main.css" />  
                  <meta name="Author" content="Anton"/><meta name="description" content="Testseite"/>  
                  <title>home</title>  
                  <meta name="generator" content="TYPO3 4.2 CMS" />  
                  <script type="text/javascript" src="typo3temp/javascript_93077bb238.js"></script>  
                </head>  
              
              

              Hier ist mir noch so einiges unklar:

              • von Typo3 wird da anscheinend irgendein javascript-Kram eingebunden. Ist das notwendig bzw. kann ich das irgendwie unterbinden?

              • was hat den die Zeile "<meta name="generator" content="TYPO3 4.2 CMS" />" zu sagen? Ist sie notwendig? Falls nein wie kann ich dafür sorgen, dass sie nicht integriert wird?

              • hinter der Metaangabe "Autor" wird kein Zeilenumbruch eingefügt. Demnach steht die Metaangabe description in der gleichen Zeile. Kann man TypoScript irgendwie veranlassen einen Zeilenumbruch einzufügen?

              • obwohl ich den Zeichensatz auf utf-8 umgestellt habe werden nicht alle Zeichen korrekt dargestellt. ä und ü werden z.B. als Fragezeichen dargestellt. Woran kann das liegen?

              • Ist es irgendwie möglich, das der Kommentar "<!-- This website is powered by TYPO3 - inspiring people... -->"  nicht in die Seite integriert wird? Kann man das über Typo3 vielleicht irgendwie abstellen?

              • wie kann ich denn beeinflussen, was innerhalb der title-Tags steht?

                • von Typo3 wird da anscheinend irgendein javascript-Kram eingebunden. Ist das notwendig bzw. kann ich das irgendwie unterbinden?

                removeDefaultJS

                Das darin enthaltene Zeug ist für die TYPO3-Internen Browserweichen wichtig, die "Verschlüsselung" von E-Mail-Adressen und das Blurring von Menüpunkten. Also alles Punkte auf die man eigentlich verzichten kann.

                • was hat den die Zeile "<meta name="generator" content="TYPO3 4.2 CMS" />" zu sagen? Ist sie notwendig? Falls nein wie kann ich dafür sorgen, dass sie nicht integriert wird?

                ja, das kannst du hardcodiert entfernen oder eine Extension schreiben, die den Code nach der Ausgabe nochmal neu parst - eine TypoScript-Option gibts dafür afaik nicht. Die Extension "source_opt" könnte dich ggf. interessieren.

                • hinter der Metaangabe "Autor" wird kein Zeilenumbruch eingefügt. Demnach steht die Metaangabe description in der gleichen Zeile. Kann man TypoScript irgendwie veranlassen einen Zeilenumbruch einzufügen?

                Auch wenn das keine Makel ansich darstellt, dir gehts um die Ästhetik - nutze anstatt der =-Schreibweise die Klammern-Schreibweise

                statt
                20.value = <meta name="description" content="Testseite"/>

                20.value (
                  <meta name="description" content="Testseite"/>
                )

                Die Description solltest du übrigens aus den Seiteneigenschaften beziehen - dafür gibts ebenfalls etwas (Stichworte: page, meta, headerdata, description)

                • obwohl ich den Zeichensatz auf utf-8 umgestellt habe werden nicht alle Zeichen korrekt dargestellt. ä und ü werden z.B. als Fragezeichen dargestellt. Woran kann das liegen?

                TYPO3 unterscheidet zwischen Frontend und Backend - hier können die Zeichencodierungen verschieden sein - während du im Backend alles in UTF-8 eingibst, wird das Frontend in ISO-8859-1 ausgeliefert oder umgekehrt.

                Ebenso kann die Datenbank Schuld haben sein.

                in der localconf.php sollten folgende Werte gesetzt sein:

                $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;';  
                $TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
                
                • Ist es irgendwie möglich, das der Kommentar "<!-- This website is powered by TYPO3 - inspiring people... -->"  nicht in die Seite integriert wird? Kann man das über Typo3 vielleicht irgendwie abstellen?

                Du kannst ihn ebenfalls Hardcodiert entfernen oder oben genannte Extension verwenden.

                • wie kann ich denn beeinflussen, was innerhalb der title-Tags steht?

                Indem du Seiten erstellst, die einen entsprechenden Seitentitel haben - mit noPageTitle = 2 kannst du ihn entfernen und durch einen eigenen ersetzen.

                1. Wiedermal besten Dank.

                  Die ganzen Infos werd ich jetzt erstmal sortieren und versuchen in die Praxis umzusetzen.

                2. »» - was hat den die Zeile "<meta name="generator" content="TYPO3 4.2 CMS" />" zu sagen? Ist sie notwendig? Falls nein wie kann ich dafür sorgen, dass sie nicht integriert wird?

                  ja, das kannst du hardcodiert entfernen oder eine Extension schreiben, die den Code nach der Ausgabe nochmal neu parst - eine TypoScript-Option gibts dafür afaik nicht. Die Extension "source_opt" könnte dich ggf. interessieren.

                  Von Extension hab ich leider noch nicht besonders viel Ahnung. Wo ich es hardcodiert entfernen soll, weiß ich auch nicht. Zu was würdest du mir denn raten... hardcodiert entfernen oder was an der extension "source_opt" ändern? Brauche noch einen Tipp sonst komme ich nicht weiter.

                  »» - hinter der Metaangabe "Autor" wird kein Zeilenumbruch eingefügt. Demnach steht die Metaangabe description in der gleichen Zeile. Kann man TypoScript irgendwie veranlassen einen Zeilenumbruch einzufügen?

                  Auch wenn das keine Makel ansich darstellt, dir gehts um die Ästhetik - nutze anstatt der =-Schreibweise die Klammern-Schreibweise

                  statt
                  20.value = <meta name="description" content="Testseite"/>

                  20.value (
                    <meta name="description" content="Testseite"/>
                  )

                  Das mit dem Zeilenumbruch klappt jetzt. Hab so gelöst:

                  headerData {
                    10 = TEXT
                    10.value (
                      <meta name="Author" content="Anton"/>
                      <meta name="description" content="Testseite"/>
                    )
                  }

                  Das blöde ist, dass jetzt die beiden Zeilen (Author und description) zu weit nach rechts eingerückt dargestellt werden. Ist natürlich wieder nur eine Ästhetiksache... aber trotzdem würde es mich interessieren, ob man dass mit dem Einrücken irgendwie beeinflussen kann?

                  »» - Ist es irgendwie möglich, das der Kommentar "<!-- This website is powered by TYPO3 - inspiring people... -->"  nicht in die Seite integriert wird? Kann man das über Typo3 vielleicht irgendwie abstellen?

                  Du kannst ihn ebenfalls Hardcodiert entfernen oder oben genannte Extension verwenden.

                  Hierzu die gleiche Frage wie oben. Von Extensions habe ich kaum Ahnung. Muß ich dazu eine Standardextension verändern. Falls ja, woher weiß ich wo. Falls ich es hardcodiert entfernen sollte... woher weiß ich wo ich was entfernen muss?

                  1. Von Extension hab ich leider noch nicht besonders viel Ahnung.

                    Jeder fängt mal klein an.

                    Wo ich es hardcodiert entfernen soll, weiß ich auch nicht. Du hast Vollzugriff auf den Quelltext, mit "find in files" sollte die entsprechende Stelle schnell gefunden sein - ich will dir den Spaß nicht verderben.

                    hardcodiert entfernen oder was an der extension "source_opt" ändern? Brauche noch einen Tipp sonst komme ich nicht weiter.

                    Ich würds einfach drin lassen - hat bisher noch niemanden gestört.

                    Das blöde ist, dass jetzt die beiden Zeilen (Author und description) zu weit nach rechts eingerückt dargestellt werden.

                    Ich würd dennoch den Autor, die Description und die Keywords aus den Seiteneinschaften beziehen - du willst doch die Description und den Autor nicht statisch für alle Seiten festbetonieren.

                    Ist natürlich wieder nur eine Ästhetiksache... aber trotzdem würde es mich interessieren, ob man dass mit dem Einrücken irgendwie beeinflussen kann?

                    Natürlich, indem du weniger oder mehr der gewünschten Whitespace-Zeichen an den Snfang stellst.

                    Keine Einrückung:
                    <meta />

                    Zwei Leerzeichen:
                      <meta />

                    woher weiß ich wo ich was entfernen muss?

                    TYPO3 ist Quelloffen, in PHP geschrieben und steht unter GPL - du musst also nichtmal zu kompliziertem Reverse Engineering greifen sondern einfach nur in den Quelltext schaun.

                    1. »» Von Extension hab ich leider noch nicht besonders viel Ahnung.
                      Jeder fängt mal klein an.

                      »» Wo ich es hardcodiert entfernen soll, weiß ich auch nicht. Du hast Vollzugriff auf den Quelltext, mit "find in files" sollte die entsprechende Stelle schnell gefunden sein - ich will dir den Spaß nicht verderben.

                      »» hardcodiert entfernen oder was an der extension "source_opt" ändern? Brauche noch einen Tipp sonst komme ich nicht weiter.

                      Ich würds einfach drin lassen - hat bisher noch niemanden gestört.

                      Ich hab's jetzt mal hardcodiert entfernt. Das klappt wunderbar. Naja ich mußte erstmal begreifen, dass ich den Cache leeren muß bevor ich die Änderung in der Quellcodedatei im Frontend zu sehen bekomme. Nun hattest du ja als Alternative zu dem hardcodierten entfernen auch die extension "source_opt" erwähnt. Ich verstehe den Zusammenhang nicht.

                      Wie kann mir den die Extension "source_opt" dabei behilflich sein, dass einzelne Elemente nichtmehr im HTML-Grundgerüst angezeigt werden?

                      Du hattet als weitere Alternative auch vorgeschlagen eine eigene Extension zu schreiben, die das HTML-Grundgerüst erneut parst. Wäre das die beste Variante verglichen mit den Varianten "hardcodiert aus dem Quellcode entfernen" bzw. das modifizieren der Extension "source_opt"?

                      Ich würd dennoch den Autor, die Description und die Keywords aus den Seiteneinschaften beziehen - du willst doch die Description und den Autor nicht statisch für alle Seiten festbetonieren.

                      Ich weiß zwar wo in den Seiteneigenschaften ich den Titel festlegen kann, ich kann allerdings nirgends finden wo ich die Description, den Autor und die Keywords über das Backend festlegen kann.

                      Kannst du mir sagen wo ich das finden kann?

                      Werden diese Metadaten, wenn ich sie im Backend eingetragen habe, automatisch in das HTML-Grundgerüst übernommen, oder muß ich das im TypoScript-Code etwas hinzufügen?

                      »» Ist natürlich wieder nur eine Ästhetiksache... aber trotzdem würde es mich interessieren, ob man dass mit dem Einrücken irgendwie beeinflussen kann?

                      Natürlich, indem du weniger oder mehr der gewünschten Whitespace-Zeichen an den Snfang stellst.

                      Keine Einrückung:
                      <meta />

                      Zwei Leerzeichen:
                        <meta />

                      Naja, dass Problem ist aber das dadurch dann der Typo3-Quellcode unübersichtlich wird. Wenn ich z.B. folgends schreibe:

                      headerData {
                           10 = TEXT
                           10.value (
                           <meta name="Author" content="Anton"/>
                           <meta name="description" content="Testseite"/>
                           )
                      }

                      werden die Metadaten Author und descrition richtig eingerückt im HTML-Grundgerüst dargestellt. Eigentlich würde ich die beiden Metazeilen aber gerne um einen TAB weiter nach rechts einrücken, damit der TypoScript-Code übersichtlicher bleibt. Ich will mir ja beim TypoScript-Code gewisse Konventionen angewöhnen. Sobald ich den Code aber so anpassen muß, dass er im HTML-Grundgerüst richtig angezeigt wird, kann ich mich nichtmehr an die Konventionen halten.

                      So würde ich es gerne formatieren:

                      headerData {
                           10 = TEXT
                           10.value (
                                <meta name="Author" content="Anton"/>
                                <meta name="description" content="Testseite"/>
                           )
                      }

                      Dann werden die beiden Metatags aber um einen TAB zu weit nach rechts dargestellt.

                      1. Wie kann mir den die Extension "source_opt" dabei behilflich sein, dass einzelne Elemente nichtmehr im HTML-Grundgerüst angezeigt werden?

                        Eie Extension manipuliert die Ausgabe, bevor sie wirklich zum Client gelangt und entfernt mit einem automatismus bestimmte Dinge.

                        Wäre das die beste Variante verglichen mit den Varianten "hardcodiert aus dem Quellcode entfernen" bzw. das modifizieren der Extension "source_opt"?

                        source_opt ist eine Extension die genau das tut - wenn du die Core-Files veränderst, hast du den nachteil, dass du beim Updaten Probleme haben wirst.

                        Kannst du mir sagen wo ich das finden kann?

                        Die entsprechenden Stichworte habe ich dir bereits genannt, eine Suche in der Suchmaschine meiner Wahl spuckt als erstes Ergebnis das hier aus: http://www.typo3wizard.com/de/snippets/general-config/meta-keywords-description.html

                        Werden diese Metadaten, wenn ich sie im Backend eingetragen habe, automatisch in das HTML-Grundgerüst übernommen, oder muß ich das im TypoScript-Code etwas hinzufügen?

                        siehe oben

                        werden die Metadaten Author und descrition richtig eingerückt im HTML-Grundgerüst dargestellt. Eigentlich würde ich die beiden Metazeilen aber gerne um einen TAB weiter nach rechts einrücken, damit der TypoScript-Code übersichtlicher bleibt. Ich will mir ja beim TypoScript-Code gewisse Konventionen angewöhnen. Sobald ich den Code aber so anpassen muß, dass er im HTML-Grundgerüst richtig angezeigt wird, kann ich mich nichtmehr an die Konventionen halten.

                        Das ist ein Dilemma, ja - kenne ich, Lösung hab ich dafür keine. Bei den paar Zeilen stört das imho aber nicht. Man kann alles übertreiben :)

                        Dann werden die beiden Metatags aber um einen TAB zu weit nach rechts dargestellt.

                        du kannst immer noch folgendes schreiben:

                        headerData.10 = TEXT
                        headerData.10.value (
                            <meta name="Author" content="Anton"/>
                            <meta name="description" content="Testseite"/>
                        )

                        1. »» Kannst du mir sagen wo ich das finden kann?
                          Die entsprechenden Stichworte habe ich dir bereits genannt, eine Suche in der Suchmaschine meiner Wahl spuckt als erstes Ergebnis das hier aus: http://www.typo3wizard.com/de/snippets/general-config/meta-keywords-description.html

                          Ich will es jetzt so lösen:

                          page.headerData.10.value (
                               <meta name="description" content="{page:description}" />
                               <meta name="keywords" content="{page:keywords}" />
                          )

                          Nachdem ich den Code so geschrieben habe wollte ich dann auf meine root-Seite um dort die Eigenschaften per Backend zu setzen. Das Problem ist das die root-Seite vom Typ Verweis und nicht vom Typ Standard ist. Da die root-Seite nicht vom Typ Standard ist existiert keine Registerkarte Metadaten. Demnach kann ich für die root-Seite keine Metadaten festlegen. Wie geht man denn hier am besten vor? Untehalb von root befindet sich navigation. Das ist wiederrum vom Typ Verweis. Kann da also auch nichts festlegen. Muss ich jetzt für jede einzelne Seite die sich unter Navigation befindet die Metaangaben manuell ausfüllen oder geht das irgendwie einfacher bzw. sinnvoller?

                          Vielleicht ist es ja sogar so gewollt, das man jeder seine expliziet etwas zuweißt?

                          1. Nachdem ich den Code so geschrieben habe wollte ich dann auf meine root-Seite um dort die Eigenschaften per Backend zu setzen. Das Problem ist das die root-Seite vom Typ Verweis und nicht vom Typ Standard ist. Da die root-Seite nicht vom Typ Standard ist existiert keine Registerkarte Metadaten. Demnach kann ich für die root-Seite keine Metadaten festlegen. Wie geht man denn hier am besten vor?

                            Doch, die Datenfelder bleiben vorhanden - Seitentyp umstellen, Keywords eintragen, Seitentyp zurückstellen :)

                            Alternativ: schreibe eine Extension, welche dir für verschiedene Seitentypen zusätzliche Werte/Felder freischaltet.

                            Aber die frage ist: wenn du eine Seite vom Typ Verweis/Shortcut hast, warum willst du dort eine Description oder Keywords hinterlegen, die doch ohnehin nicht angezeigt werden?

                            Muss ich jetzt für jede einzelne Seite die sich unter Navigation befindet die Metaangaben manuell ausfüllen oder geht das irgendwie einfacher bzw. sinnvoller?

                            Müssen nicht, du kannst die Angaben auch vererben - nachdem aber jede Seite einen ganz speziellen Inhalt hat, sollte auch jede Seite eigene Keywords und eine eigene Description haben - zudem ist der Autor einer Seite nicht zwangsläufig immer gleich.

                            Prinzipielle vorgehensweise (so mach ich das jedenfalls)

                            1 root
                            -- 2 Startseite
                            -- 3 Seite A
                            -- 4 Seite B
                            ---- 5 Seite B.1

                            1: hier kommt das Haupttemplate (TypoScript) rein und alle Dinge die sich Vererben, die Seite ist ein Shortcut auf 2
                            2: ist die Startseite, diese kann ein anderes HTML-Template haben, ohne dass sich das Ding auf alle anderen Seiten abwärts vererbt.
                            3-5: normale Seiten, die das HTML-Template von root (1) vererbt bekommen.

                            1. Aber die frage ist: wenn du eine Seite vom Typ Verweis/Shortcut hast, warum willst du dort eine Description oder Keywords hinterlegen, die doch ohnehin nicht angezeigt werden?

                              Der Grundgedanke war der, dass zumindest einige Elemente sich häufig nicht in der Vererbungshierarchie ändern. Im besoneren meine ich hier z.B. den Autor. Den würde ich dann einmal bei root festlegen und bräuchte ihn in den ganzen Unterseiten nicht noch einmal manuell festzulegen. Trotzdem besteht ja dann weiterhin die Möglichkeit den Autor zu überschreiben.

                              1. Der Grundgedanke war der, dass zumindest einige Elemente sich häufig nicht in der Vererbungshierarchie ändern. Im besoneren meine ich hier z.B. den Autor. Den würde ich dann einmal bei root festlegen und bräuchte ihn in den ganzen Unterseiten nicht noch einmal manuell festzulegen. Trotzdem besteht ja dann weiterhin die Möglichkeit den Autor zu überschreiben.

                                Wenn das eine Information ist, die du nicht permanent wartest, wie gesagt:

                                • Seitentyp umstellen
                                • Metainformationen eintragen
                                • Seitentyp zurückstellen

                                Wenns eine Information ist, die du häufig änderst

                                • gewöhn' dich an diese Methode
                                • schreibe/verwende eine Extension
                            2. »» Nachdem ich den Code so geschrieben habe wollte ich dann auf meine root-Seite um dort die Eigenschaften per Backend zu setzen. Das Problem ist das die root-Seite vom Typ Verweis und nicht vom Typ Standard ist. Da die root-Seite nicht vom Typ Standard ist existiert keine Registerkarte Metadaten. Demnach kann ich für die root-Seite keine Metadaten festlegen. Wie geht man denn hier am besten vor?

                              Doch, die Datenfelder bleiben vorhanden - Seitentyp umstellen, Keywords eintragen, Seitentyp zurückstellen :)

                              genau das hab ich jetzt gemacht. Zunächt den Typ von root auf Standard gesetzt. Anschließend die Werte eingetragen, gespeichert und den Typ wieder zurück auf Verweis gesetzt. Im TypoScript habe ich folgendes stehen:

                              headerData.10 = TEXT
                              headerData.10.insertData = 1

                              headerData.10.value (
                                   <meta name="description" content="{page:description}"/>
                                   <meta name="keywords" content="{page:keywords}"/>
                              )

                              Im html Grundgerüst werden aber nicht die Werte angezeigt die ich für root festgelegt habe. Woran könnte das denn liegen? Im html Grundgerüst wird einfach nur das angezeigt:

                              <meta name="description" content=""/>
                              <meta name="keywords" content=""/>

                              1. Wenn ich die Werte direkt in der seite home, die von root abgeleitet ist einfüge, dann klappt es. Demnach werden die Werte wohl nicht korrekt von root an home vererbt.

                                1. Wenn ich die Werte direkt in der seite home, die von root abgeleitet ist einfüge, dann klappt es. Demnach werden die Werte wohl nicht korrekt von root an home vererbt.

                                  Vererbung funktioniert bei diesen Werten nicht "einfach so", dafür musst du schon etwas tun - "(content) slide" dürfte dich interessieren.

        2. Hi!

          ... und zwar aus dem menübaum den du in typo3 erstellst - zudem soll der derzeitige menüpunkt anders aussehen (andere klasse, nicht verlinkt, etc.),...

          Das geht mit Typo3? Ich kenn nur Typo3-Seiten, die auch den derzeitigen Menüpunkt verlinken. Ist das so schwierig einzustellen, oder schert das die meisten Typo3-User wenig?

          FG Ulysses

          1. Das geht mit Typo3?

            Ja, du kannst mit TYPO3 jeden beliebigen Code produzieren (wer anderes behaupt lügt :)). im Notfall muss man halt benutzerdefinierten PHP-Code einbinden oder eine Extension schreiben - aber fast 100% der gängigen Dinge werden durch Bordmittel abgedeckt.

            Der CUR-Menüzustand kennt dafür z.B. doNotLinkIt

            Ich kenn nur Typo3-Seiten, die auch den derzeitigen Menüpunkt verlinken.

            Das mag daran liegen, dass die Standardmenüs die TYPO3 ausspuckt (also die ohne Modifikationen) gelinde gesagt etwas suboptimal sind und man 100e Tutorials und Bücher findet, die es falsch oder sehr nüchtern zeigen.

            Ist das so schwierig einzustellen, oder schert das die meisten Typo3-User wenig?

            Siehe oben - es ist genau eine Zeile in der Menükonfiguration - das Problem ist, das alle sinnvollen Dinge in einer Menükonfiguration zusammen sehr komplex (bzw. viel) werden. noBlur = 1 deaktiviert z.B. das unsinnige Entfernen der Outlines. htmlSpecialChars = 1 sollte selbstverständlich sein.

            Die aktuell von mir verwendeten Menüscripte/-configs haben rund 50 bis 200 Zeilen TypoScript - die meisten Menüs die man im Netz findet haben wenns hoch kommt etwa 25 Zeilen, viele sogar < 10 Zeilen. Und wenn sie denn doch mal etwas länger sind, haben sie fürchterlichen Code.

            Wie bereits erwähnt ist der sinn eines CMS und einer Templateengine für micht, dass das System genau den Code produziert, den ich vorher in meinem Template definiert/gebaut habe. Wenn man fix fertige Schnipsel generiert bekommt und dann erst sein Template umbauen muss, damits halbwegs passt, ist das unsinnig.

            Aber so ist das halt - wenn man in PHP ein ordentliches Menüscript schreibt, braucht das auch mit allem drum und dran etwas mehr als 10 Zeilen Code :).

            1. Hi!
              Danke für deine ausführliche Antwort!
              Mir graut noch immer vor CMS. Der Aufwand dafür scheint wesentlich höher zu sein als der Nutzen - sofern es sich um eine überschaubare Anzahl an Seiten handelt (ich weiß, du bist anderer Meinung)

              FG Ulysses

              1. Mir graut noch immer vor CMS. Der Aufwand dafür scheint wesentlich höher zu sein als der Nutzen - sofern es sich um eine überschaubare Anzahl an Seiten handelt (ich weiß, du bist anderer Meinung)

                Ich seh' das so:

                TYPO3 bietet mir viele Dinge, die ich nicht selbst programmieren muss. Wie etwa Benutzerverwaltung, eine Templateengine usw. Das ist für kleine Projekte der Overkill, ja - aber wenn man überall das selbe System (oder zumindest ein ähnliches) einsetzt, spart man sich viel Denkerei.

                1. Hi!

                  Ich glaub' bevor ich mich in Typo3 einarbeite gebe ich einen allfälligen Auftrag an dich weiter. Hoffe, du hast dann noch freie Ressourcen...

                  FG Ulysses

                  1. Ich glaub' bevor ich mich in Typo3 einarbeite gebe ich einen allfälligen Auftrag an dich weiter. Hoffe, du hast dann noch freie Ressourcen...

                    Mit freien Ressourcen siehts bei mir immer schlecht aus - aber das hat mich noch nie gestört :D