HanSolo: Typo3 Quellcode optisch ansehnlisch gestalten

Hallo,

nach vielen Änderungen die ich über TypoScript durchgeführt habe ist der von Typo3 generierte Quellcode mitlerweile schon recht ansehnlich, dennoch gibt es noch einige Kleinigkeiten die mir noch nich so ganz passen. Vielleicht könnt ihr (mir ihr meine ich natürlich dich suit ;-)) noch ein bißchen hinsichtlich der Quellcodeästetik auf die Sprünge helfen. Folgende Dinge stören mich noch:

1.)
Das erste betrifft die Zeilen die sich zwischen <head> und </head> befinden. <meta> und <title>-Tags werden richtig um einen Tab nach rechts eingerückt dargestellt. <link>-Tags hingegen werden nicht ordentlich eingerückt dargestellt. Sie werden direkt unter <head> angezeigt. Die Ausgabe sieht ungefähr so aus:

  
<head>  
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<link rel="stylesheet" type="text/css" href="fileadmin/css/main.css" />  
     <title>Titel der Seite</title>  
</head>  

Wie kann ich erreichen, dass auch die link-Tags, genauso wie die meta- und title-Tags richtig eingerückt dargestellt werden?

2.)
Ich hätte gerne das für Absätze <p>Absatz</p> eine eigene Zeile im Quellecode genommen wird. Beim generierten Quellcode ist es so, dass das schließende </p> in der nächsten Zeile steht. So will ich das nicht haben. Kann man das irgendwie ändern? Des weiteren ist es so, das mit einem <p> keine neue Zeile begonnen wird. Befindet sich das <p> z.b. in einem div-Container, so wird es direkt hinter dem <div>-Tag in den Quelltext geschrieben und leider nicht in eine neue Zeile. Wie kann ich das <p>-Tag meinen Wünschen anpassen?

  1. Wie kann ich erreichen, dass auch die link-Tags, genauso wie die meta- und title-Tags richtig eingerückt dargestellt werden?

    Zwei Möglichkeiten: tidy (einfach mal in All Configuration im Install-Tool nachsehen) - muss natürlich am Server vorhanden sein.

    Oder du nutzt eine PHP-Bibliothek die den Code bereinigt und sauber einrückt - da gibts bereits eine Extension das und einiges mehr tut - allerdings teilweise nicht recht sauber - sourceopt nennt sich diese.

    Ich arbeite seit einiger Zeit selbst an einer entsprechenden Extension, hab aber noch keine ordentliche PHP-Klasse oder vergleichbares gefunden die Tidy ordentlich ersetzen könnte.

    Wie kann ich das <p>-Tag meinen Wünschen anpassen?

    Siehe oben.

    1. Zwei Möglichkeiten: tidy (einfach mal in All Configuration im Install-Tool nachsehen) - muss natürlich am Server vorhanden sein.

      Das hab ich gemacht, war defautlmäßig auf "cached" gestellt, hab's einfach mal auf all umgestellt. Trotzdem ändert sich nix am Quellcode. Muß ich da sonst noch was machen?

      Oder du nutzt eine PHP-Bibliothek die den Code bereinigt und sauber einrückt - da gibts bereits eine Extension das und einiges mehr tut - allerdings teilweise nicht recht sauber - sourceopt nennt sich diese.

      Warum sollt ich denn die extension verwenden, wenn das alles mit tidy geht? Du sagst sourceopt macht das nicht sauber. Das ist ja dann Mist wenn die Extension aus unsauberem Code keinen sauberen macht kann ich mir den Einsatz der Extension doch gleich sparen.

      Ich arbeite seit einiger Zeit selbst an einer entsprechenden Extension, hab aber noch keine ordentliche PHP-Klasse oder vergleichbares gefunden die Tidy ordentlich ersetzen könnte.

      Kann ich Deine Extension haben, oder macht das zu dem jetzigen Zeitpunkt noch keinen Sinn?

      1. Zwei Möglichkeiten: tidy (einfach mal in All Configuration im Install-Tool nachsehen) - muss natürlich am Server vorhanden sein.

        Das hab ich gemacht, war defautlmäßig auf "cached" gestellt, hab's einfach mal auf all umgestellt. Trotzdem ändert sich nix am Quellcode. Muß ich da sonst noch was machen?

        tidy muss vorhanden sein (ohne dem PCEL-tidy-Paket) kannst du einstellen was du willst

        Warum sollt ich denn die extension verwenden, wenn das alles mit tidy geht?

        Wenn tidy nicht "funzt" brauchst du eine alternative.

        Das ist ja dann Mist wenn die Extension aus unsauberem Code keinen sauberen macht kann ich mir den Einsatz der Extension doch gleich sparen.

        Ich meinte du sollst sie als Anregung für eine eigene Extension verwenden.

        HTML bereinigen und alle Regeln der DTD zu beachten ist eine Komplexe aufgabe - du erwartest nicht im ernst dass es eine TYPO3-Extension gibt die tidy ordentlich ersetzt? Das Güteniveau von TYPO3-Extensions ist idR. etwas niedrig - man muss selbst Hand anlegen.

        Kann ich Deine Extension haben, oder macht das zu dem jetzigen Zeitpunkt noch keinen Sinn?

        Die Extension stellt nur das Framework zum erneuten Parsen des HTML dar - aktuell kann sie eigentlich garnix, lediglich ein paar kleinigkeiten wie z.B. den Meta-Generator entfernen oder diese unsinnigen blur-JavaScript-Geschichten bei Links.

        Ich such immer noch nach einem ordentlichen tidy-Ersatz der in PHP verfasst wurde. Ordentlich im Sinne von GeSHi - nur halt zum Code bereinigen, nicht zum Syntax highlighten.

    2. Hallo,

      also tidy hat das Markup jetzt umgebaut. Sieht richtig gut aus. Ein paar Kleinigkeiten stören mich noch. Zwischen Absätzen werden Beispielsweise Leerzeilen gelassen. Kann man die Tidykonfiguration irgendwie beeinflussen?

      1. Kann man die Tidykonfiguration irgendwie beeinflussen?

        Doku lesen.

        1. Kann man die Tidykonfiguration irgendwie beeinflussen?
          Doku lesen.

          Das mach ich ja grade auf dieser Seite:

          http://tidy.sourceforge.net/docs/quickref.html#top

          Da finde ich aber nix was dafür sorgt, dass die Leerzeilen zwischen den Absätzen weggelassen werden.

          1. Da finde ich aber nix was dafür sorgt, dass die Leerzeilen zwischen den Absätzen weggelassen werden.

            Ich würde mit indent experimentieren.

            Leider kann ich dir dabei auch nicht helfen, weil ich mich mit tidy bisher nur sehr grundlegend beschäftigt habe.

            1. Da finde ich aber nix was dafür sorgt, dass die Leerzeilen zwischen den Absätzen weggelassen werden.

              Ich würde mit indent experimentieren.

              Leider kann ich dir dabei auch nicht helfen, weil ich mich mit tidy bisher nur sehr grundlegend beschäftigt habe.

              Ich habs gefunden. Es geht so:

              indent-spaces 1

              indent-spaces ist defaultmäßig auf 2

              Hatte das auch sofort vermutet. Es hat nicht geklappt, weil ich den gottverfluchtne Cache nicht gelöscht hatte.

              1. Hatte das auch sofort vermutet. Es hat nicht geklappt, weil ich den gottverfluchtne Cache nicht gelöscht hatte.

                Du solltest darüber nachdenken, den Cache allgemein während der entwicklung zu deaktieren :)

                1. Hatte das auch sofort vermutet. Es hat nicht geklappt, weil ich den gottverfluchtne Cache nicht gelöscht hatte.

                  Du solltest darüber nachdenken, den Cache allgemein während der entwicklung zu deaktieren :)

                  Hab mich zu früh gefreut. Daran hat es aber nicht gelegen. Das ist die default Konfiguration:

                  tidy -i --quiet true --tidy-mark true -wrap 0 -raw

                  habs so geändert

                  tidy -i --quiet true --tidy-mark true -wrap 0 -raw --ident yes

                  Das klappt leider nicht :-(. Dadurch geht die komplette Formatierung verloren. Hab dann wohl syntaktisch irgendwas falsch gemacht. manchmal schreibt man ja --<Parameter> und manchmal -<Parameter>. Wann verwendet man denn ein - und wann zwei --.

                  Kannst du vielleicht bei dir mal testen. Du hast das sicherlich in zwei Minutne rausgefunden ;-)

                2. Mir ist nochwas aufgefallen. tidy mach aus meinem Copyright Symbol das ich folgendermaßen in der HTML-Desingvorlage angegeben habe:

                  &copy;

                  einfach ein ?. So ein Ärger... kann man das irgendwie unterbinden?

                  1. einfach ein ?. So ein Ärger... kann man das irgendwie unterbinden?

                    U+00A9 direkt verwenden -> ©
                    http://www.w3.org/International/questions/qa-escapes

                    1. einfach ein ?. So ein Ärger... kann man das irgendwie unterbinden?

                      U+00A9 direkt verwenden -> ©
                      http://www.w3.org/International/questions/qa-escapes

                      Ich habe jetzt U+00A9 direkt in meine HTML-Designvorlage eingefügt. Angezeit wird allerdings nicht das Copyrightsymbol sondern einfach nur ein Rechteck. Eine Ahnung woran das liegen kann?

                      1. Ich habe jetzt U+00A9 direkt in meine HTML-Designvorlage eingefügt. Angezeit wird allerdings nicht das Copyrightsymbol sondern einfach nur ein Rechteck. Eine Ahnung woran das liegen kann?

                        Zeichencodierung?

                        1. Ich habe jetzt U+00A9 direkt in meine HTML-Designvorlage eingefügt. Angezeit wird allerdings nicht das Copyrightsymbol sondern einfach nur ein Rechteck. Eine Ahnung woran das liegen kann?

                          Zeichencodierung?

                          UTF8

                          1. Zeichencodierung?

                            UTF8

                            Ich meinte damit nicht "Welche Zeichencodierung glaubst du zu verwenden?" sondern "Ich vermute, dass das Problem mit einer fehlerhaften Zeichencodierung zusammenhängt. Hast du schon alle relevanten stellen geprüft?"

                            1. Zeichencodierung?

                              UTF8

                              Ich meinte damit nicht "Welche Zeichencodierung glaubst du zu verwenden?" sondern "Ich vermute, dass das Problem mit einer fehlerhaften Zeichencodierung zusammenhängt. Hast du schon alle relevanten stellen geprüft?"

                              Die relevanten Stellen sind dann wohl die DB, das Backend und die Codierung in welcher die HTML-Designvorlage gespeichert ist.

                              • Die Designvorlage habe ich unter UTF8 gespeichert
                              • im Backend und in der Datenbank hab ich da irgendwann auch mal was hinsichtlich UTF8 umgestellt, kann mich aber leider nichtmehr erinnern wo ich das gemacht habe.

                              Kannst du mir sagen wie ich hinsichtlich der DB und des Backends überprüfen kann, ob dort UTF8 eingestellt ist?

                              1. Kannst du mir sagen wie ich hinsichtlich der DB und des Backends überprüfen kann, ob dort UTF8 eingestellt ist?

                                Zur Datenbank: mit phpMyAdmin würde ich beginnen. Wichtig ist natürlich auch, dass die Datenbak mit TYPO3 "in utf-8 spricht" - also SET NAMES im DB init nicht vergessen.

                                Zum Backend, unter Firefox: Extras -> Seiteninformationen

  2. Guten Tag,

    nach vielen Änderungen die ich über TypoScript durchgeführt habe ist der von Typo3 generierte Quellcode mitlerweile schon recht ansehnlich, dennoch gibt es noch einige Kleinigkeiten die mir noch nich so ganz passen. Vielleicht könnt ihr (mir ihr meine ich natürlich dich suit ;-)) noch ein bißchen hinsichtlich der Quellcodeästetik auf die Sprünge helfen.

    Geht es dabei um Quelltext, der an die Clients ausgeliefert wird, oder um solchen, der von dir noch bearbeitet wird?

    --
    Zend Certified Engineer
    Certified Urchin Admin
    Selfcode: sh:( fo:) ch:? rl:? br:& n4:( ie:( mo:) va:} de:] zu:$ fl:( ss:} ls:& ja:|
    1. Geht es dabei um Quelltext, der an die Clients ausgeliefert wird, oder um solchen, der von dir noch bearbeitet wird?

      Mit Sicherheit um den der an den Client geliefert wird ;)

    2. Geht es dabei um Quelltext, der an die Clients ausgeliefert wird, oder um solchen, der von dir noch bearbeitet wird?

      Es geht um den Quelltext der an die Clients ausgeliefert wird. Folgendes mach ich bisher zu Codebereinnigung:

      config.disablePrefixComment = true
      tt_content.stdWrap.dataWrap >

      lib.parseFunc_RTE.nonTypoTagStdWrap {
      encapsLines.addAttributes.P.class >
      encapsLines.encapsTagList := addToList(address, a)
      HTMLparser = 1
      HTMLparser {
      tags.b.remap = strong
      tags.i.remap = em
      }
      }

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

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