Christoph Schnauß: Formatierung für verlinktes Projekt mit *.shtml-Datei übergeben

hallo Forum ;-)

ich habe folgendes Problem: ich habe ein "großes" Projekt mit etwas über 700 einzelnen HTML-Dokumeten (ein Paket aus manual pages zu einem Thema) per download bezogen. Die HTML-Dokumente sind untereinander verlinkt.
Jetzt gefällt mir aber die Schrift nicht, und ich habe eine kleine CSS dazugetan, die so formatieren würde, wie ich das gerne möchte. Mir wird es aber zuviel, in sämtliche Dokumente manuell die entsprechende <link href...>-Angabe einzubauen, und so dachte ich, ich könnte es mit einer include-Anweisung versuchen  -  und zwar so, daß ich die Seiten alle in eine Frame-Konstruktion lade. Linkes Frame mit Inhaltsverzeichnis und rechtes Frame die Seiten ... Die Frameseite sollte dann index.shtml heißen.
Irgendwie kriege ich das aber nicht hin, daß meine include-Anweisung von allen Seiten befolgt wird. Es klappt immer nur mit der ersten aufgerufenen Seite, wenn ich weiterklicke, ist die Formatierung wieder weg.

Weiß jemand einen Rat ?

Christoph S.

  1. hi Christoph S.,

    das prob. hatte ich auch mal. ich hab es so gelöst.

    einen guten einfachen texteditor (bei mir nottab) der mehrere dateien aktualisieren kann nehmen so ca 100 dateien (je nach größe der dateien) markieren und per send To an den editor schicken. hat bei mir ca 2-3 min gedauert bis alle geladen waren (bei mir hatte jede datei zeischen 8 und 15 kb).
    dann per suchen und ersetzen austauschen ich habe so getauscht.

    suche: <head>
    ersetzte mit <head><link rel.......>

    dauerte ca 2 min.

    dann alles speichern, ist wichtig das dein editor das unterstützt.

    machst du dan sieben mal biste nach 1 h fertig.

    ciao stefan
    achso mein rechner pentium 350 mhz 128 mb ram

    1. hi,

      einen guten einfachen texteditor (bei mir nottab) der mehrere dateien aktualisieren kann nehmen so ca 100 dateien (je nach größe der dateien) markieren und per send To an den editor schicken. hat bei mir ca 2-3 min gedauert bis alle geladen waren (bei mir hatte jede datei zeischen 8 und 15 kb).
      dann per suchen und ersetzen austauschen ich habe so getauscht.

      schönen Dank ;-)
      ABER: naja, auf die Idee kam ich auch schon. Als "Editor" verwende ich im wesentlichen Textpad, da könnte ich auch alle 700 Dateien gleichzeitig laden ...

      Mir ging es bei meinem Posting nicht nur um "so eine" Lösung, sondern ums Prinzip bei den SSI. Ich möchte schon gerne wissen, ob mans mit SSI eben auch hinkriegt  -  das hätte den Vorteil, daß ich die Formatierung sehr schnell im gesamten Projekt ändern könnte, wenn sie mir eines Tages verbesserngsbedürftig erscheint.

      Christoph S.

      1. Hi,

        Mir ging es bei meinem Posting nicht nur um "so eine" Lösung, sondern ums Prinzip bei den SSI. Ich möchte schon gerne wissen, ob mans mit SSI eben auch hinkriegt

        das sollte so funktionieren. Ich denke, Du hast ein SSI-Problem, das nicht speziell auf CSS beschränkt ist. (Konfiguration? Namensendungen? Was zeigt der Browser im HTML-Quelltext?)

        das hätte den Vorteil, daß ich die Formatierung sehr schnell im gesamten Projekt ändern könnte, wenn sie mir eines Tages verbesserngsbedürftig erscheint.

        Die entsprechende Indirektion hast Du doch bereits durch die <link>-Anweisung - Du brauchst nur noch den Inhalt der CSS-Datei zu ändern.

        mfG - Michael

        1. das sollte so funktionieren. Ich denke, Du hast ein SSI-Problem, das nicht speziell auf CSS beschränkt ist. (Konfiguration? Namensendungen? Was zeigt der Browser im HTML-Quelltext?)

          ja, das denke ich auch  -  obwohl ich sonst "im allgemeinen" noch keine Probleme hatte, aber SSI benutze ich selten.

          Meine "index.shtml" soll ungefähr so aussehen:

          <html>
          ...
          <!-- include.... format.css ...
          <frameset>
            <frame name ... src=inhalt.htm>
            <frame name ... src=erste-Seite.htm>
          </frameset>

          </html>

          Ich habe natürlich an der "Reihenfloge" der Tags herumprobiert, meine include-Anweisung mal in den Header, mal in den body geschrieben. Es reicht immer nur so weit, daß mir die erste aufgerufene Seite korrekt dargestellt wird; sobald der erste link angeklickt udn damit eine andere Seite aufgerufen wird, ist die Formatierung verschwunden.

          Dasselbe Problem besteht auch, wenn ich es mit etwas anderem HTML-Code versuche. Da wäre "index.shtml" dann z.B:

          ...
          <link href="format.css">
          ...
          <!-- include ...  index0.htm
          ...

          und "index0.htm" wäre dann eine Frameseite

          Christoph S.

          1. Hallo !

            Mir schwant, hier liegt ein grundsätzliches Missverständnis vor.

            Irgendwie wirfst du Frames und SSI gehörig durcheinander.

            Per SSI lassen sich KEINE _vollständigen_ HTML-Seiten einbinden und noch weniger externe CSS-Dateien.

            Mit Frames kannst du andererseits zwar vollständige HTML-Seiten 'einbinden', nur: Die CSS-Formatierung, die in der Frameset-Datei vorgenommen wird, wirkt sich (leider) nicht auf die Frame-HTMLs aus.

            Mir erschien der erste Ansatz von stefan(klein geschrieben) am vernünftigsten.

            Ist fast keine Arbeit, und du kannst die Formatierungen nachträglich (durch das Ändern der 1 externen CSS-Datei) nach deinen Vorstellungen verändern.

            Warte, ich hab' auch irgendwo ein Beispiel, wo das so gemacht wird. Warte, wie hieß es noch ? Ach ja richtig: SelfHTML. ;-)

            Gruß,
            Kerki

            1. ebenfalls hallo ;-)

              Mir schwant, hier liegt ein grundsätzliches Missverständnis vor.

              Irgendwie wirfst du Frames und SSI gehörig durcheinander.

              hm, nein, ein "grundsätzliches Mißverständnis" liegt nicht vor (hoffe ich). Ich hab allerdings bisher noch nie versucht, _gleichzeitig_ eine Frame- und eine SSI-Konstruktion zu bedienen.

              Per SSI lassen sich KEINE ... externe CSS-Dateien. (einbinden)

              nicht, wenn man es _direkt_ versucht. Aber wenn ich in einem HTML-Bereich ein entsprechendes <link href...> anbringe, geht es. Daraus resultiert ja meine Verunsicherung

              Mit Frames kannst du andererseits zwar vollständige HTML-Seiten 'einbinden', nur: Die CSS-Formatierung, die in der Frameset-Datei vorgenommen wird, wirkt sich (leider) nicht auf die Frame-HTMLs aus.

              auch nicht völlig richtig. Wenn ich mein Frameset "on the fly" über Javascript erzeuge, werden CSS-Formatierungen übernommen.

              Mir erschien der erste Ansatz von stefan(klein geschrieben) am vernünftigsten.

              naja >seufz>, vernünftig isses schon, aber eben auch etwas aufwendig.

              Warte, ich hab' auch irgendwo ein Beispiel, wo das so gemacht wird. Warte, wie hieß es noch ? Ach ja richtig: SelfHTML. ;-)

              prima Idee ;-)

              aber da hab ich nix Entsprechendes gefunden :-( deshalb hab ich ja hier im Forum gepostet.

              Christoph S.

              1. Hallo !

                Das mit dem Missverständnis lassen wir mal aussen vor.

                nicht, wenn man es _direkt_ versucht. Aber wenn ich in einem HTML-Bereich ein entsprechendes <link href...> anbringe, geht es. Daraus resultiert ja meine Verunsicherung

                Das ist dann aber nicht SSI !

                Mit Frames kannst du andererseits zwar vollständige HTML-Seiten 'einbinden', nur: Die CSS-Formatierung, die in der Frameset-Datei vorgenommen wird, wirkt sich (leider) nicht auf die Frame-HTMLs aus.

                auch nicht völlig richtig. Wenn ich mein Frameset "on the fly" über Javascript erzeuge, werden CSS-Formatierungen übernommen.

                Hört sich für mich jetzt komisch an, kann aber sein. Bin KEIN Javascript-Experte - alles Teufelszeug! ;-)

                Mir erschien der erste Ansatz von stefan(klein geschrieben) am vernünftigsten.

                naja >seufz>, vernünftig isses schon, aber eben auch etwas aufwendig.

                Nicht wenn du einen Editor benutzt, der 'Dateiübergreifendes Ersetzen' ermöglicht !
                (Textpad, den ich ansonsten auch sehr gerne benutze kann das leider nicht)
                Wohl aber der HTML-Editor (Phase 5) von Uli Meybohm, der u.a. hier http://www.teamone.de/selfaktuell/partner/htmledit.htm mit Recht angepriesen wird.

                Dann mußt du die 700 Dateien nicht erst öffnen, sondern kannst das Ersetzen quasi 'im Schlaf' erledigen lassen.

                Warte, ich hab' auch irgendwo ein Beispiel, wo das so gemacht wird. Warte, wie hieß es noch ? Ach ja richtig: SelfHTML. ;-)

                prima Idee ;-)

                aber da hab ich nix Entsprechendes gefunden :-( deshalb hab ich ja hier im Forum gepostet.

                Christoph S.

                Ähem, hier meinte ich noch direkter SelfHTML selbst, als du glaubst. Schau dir doch mal den QUELLTEXT genau dieser Seite an: 4. Zeile von oben (glaube ich) : <link rel="stylesheet" ...> :)

                Ich hoffe, jetzt hat's gefunkt.

                Gruß,
                Kerki

                1. Hi,

                  nicht, wenn man es _direkt_ versucht. Aber wenn ich in einem HTML-Bereich ein entsprechendes <link href...> anbringe, geht es. Daraus resultiert ja meine Verunsicherung
                  Das ist dann aber nicht SSI !

                  Wenn das <link>-Tag per SSI included wird, dann schon. Nur: Was ist dann flexibler, als direkt das <link> in jede Datei zu schreiben? So müßte er ein <!--INCLUDE> in jede Datei schreiben ...

                  (Textpad, den ich ansonsten auch sehr gerne benutze kann das leider nicht)

                  Nein? Ich mache das dauernd:
                  1. "In Dateien suchen", z. B. nach <BODY> in meinem gesamten Homepage-Baum (findet alle entsprechenden Dokumente).
                  2. "Alle laden" aus dem Kontextmenü (rechte Maustaste).
                  3. Suchen & Ersetzen mit Dialog-Feld "Alle Dokumente" selektiert.
                  4. "Alle speichern" aus dem Menü "Datei".

                  Geht in Textpad 3.2.5. und 4.0.

                  mfG - Michael

                  1. Hallo !

                    Wenn das <link>-Tag per SSI included wird, dann schon. ...

                    Klar, da hast du - wie immer - Recht.
                    Christophs Ansatz sah mir aber nicht danach aus:

                    <!-- include.... format.css ...

                    Nur: Was ist dann flexibler, als direkt das <link> in jede Datei zu schreiben? So müßte er ein <!--INCLUDE> in jede Datei schreiben ...

                    .. und wir wären wieder da, wo wir hergekommen sind.

                    Geht in Textpad 3.2.5. und 4.0.

                    Gott, wie peinlich. :-(
                    Schlag mich tot, aber das war wohl zu offensichtlich, als das ich es selbst gesehen hätte. Danke!

                    Gruß,
                    Kerki

                  2. hallo ihr beiden,

                    Das ist dann aber nicht SSI !

                    Wenn das <link>-Tag per SSI included wird, dann schon. Nur: Was ist dann flexibler, als direkt das <link> in jede Datei zu schreiben? So müßte er ein <!--INCLUDE> in jede Datei schreiben ...

                    Ja, das ist in Kurzfassung genau meine Frage gewesen ;-)

                    (Textpad, den ich ansonsten auch sehr gerne benutze kann das leider nicht)

                    doch  -  siehe Michaels Antwort.

                    Und weil ich nun die Nase voll hatte, hab ich was GANZ ANDERES gemacht <g>  -  ich habe sowieso schon ein kleines Perl-script liegen gehabt zum "Ersetzen", da hab ich nun bißchen dranrumgefummelt und die Zeile </head> durch einen neuen Anweisungsblock ersetzt. Fertich.

                    Besten Dank für eure Antworten, sie haben mir durchaus weitergeholfen, auch wenn ich nun eine andere Lösung gefunden hab.

                    Christoph S.

                  3. Hi,
                    [...]
                    Geht in Textpad 3.2.5. und 4.0.

                    mfG - Michael

                    Hi,
                    Und in der aktuellen 4.3 geht's auch!
                    Andreas

                2. hi

                  Hört sich für mich jetzt komisch an, kann aber sein. Bin KEIN Javascript-Experte - alles Teufelszeug! ;-)

                  ach was, von wegen ... der Code für so ein "on the fly" erzeugtes Frameset ist ganz einfach:

                  function openframe () {
                  document.open("text/html");
                  document.write('<meta http-equiv="Content-Language" content="de">');
                  document.write('<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">');
                     document.write('<title>Christoph Schnauß</title>');
                  document.write('</head>');
                  document.write('<frameset framespacing="0" frameborder="0" cols="*,85%">');
                  document.write('<frame name="links" scrolling="no" src="inhalt.htm">');
                  document.write('<frame name="main" src="main.htm">')
                  document.write('</frameset>');
                  document.write('</body>');
                  document.write('</html>');
                  document.close();
                  }

                  Einiges davon könntest du sogar weglassen, andrerseits kann man eben auch noch hinzufügen, was man hinzufügen möchte. Die Funktion "openframe" wird wie jede andere auch behandelt, also kannst du sie nach Belieben gleich mit "onLoad" beim Seitenaufruf starten, oder irgendein button übernimmt es mit "...onClick=javascript:..."

                  Überhaupt kein "Teufelszeugs" ;-))

                  Christoph S.