Lollo: Design/Programmierung/Layout Trennen ->Problem

Guten Tag (Mahlzeit),

immer wieder liest man das sich durch die Trennung von Design, Inhalt und Programmierung große Vorteile ergeben, wie leichte Pflegbarkeit der Seiten, etc.

Ich habe ebenfalls alles getrennt, stehe aber nun vor dem Problem, dass sich dadurch, dass sämltlicher Inhalt in der DB ist und es nur noch leere Templates gibt, mir alle Formatierungsmöglichkeiten des Textes entgehen. Wie soll man nun in einer DB enthaltenen Text formatieren.

In der DB selber soll ja kein html vorkommen (Trennung von Design,Lyout, Programmierung). Wenn ich aber im Text bestimmte Wörter unterstrichen haben möchte oder kursiv geht das mit diesem Konzept nicht. Und für jeden Absatz eine Routine zu schreiben, die regexp bestimmte Wörter mit html Formatierungen ergänzt ist wohl eher ein Apltraum.

Wie also dieser Misere entgehen ? BB Code verwenden? Warum dann nicht gleich html verwenden in der DB.

Ahhhh. Dieses Problem hat mir schon einige schlaflose Nächte bereitet.

Wie seht/regelt ihr das?

Danke

  1. Hi,

    Ich habe ebenfalls alles getrennt, stehe aber nun vor dem Problem, dass sich dadurch, dass sämltlicher Inhalt in der DB ist und es nur noch leere Templates gibt, mir alle Formatierungsmöglichkeiten des Textes entgehen. Wie soll man nun in einer DB enthaltenen Text formatieren.

    mit CSS.

    In der DB selber soll ja kein html vorkommen

    HTML hat ja auch mit Formatierung nichts zu tun :-)

    Wenn ich aber im Text bestimmte Wörter unterstrichen haben möchte oder kursiv geht das mit diesem Konzept nicht.

    Diese Textstellen müssen irgendwie erkannt und mit einer günstigen Struktur versehen werden, z.B. einem <span class="wasIstEsDenn"> oder einem <abbr>.

    BB Code verwenden?

    Das oder etwas ähnliches würde die Erkennung erleichtern.

    Warum dann nicht gleich html verwenden in der DB.

    Textstellen zu markieren ist eine Sache. Ihnen Elemente beizufügen, die _völlig anderen Komponenten_ (etwa den Templates) vorbehalten sind, ist etwas ganz anderes.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      mit CSS.

      Ja, aber mit css kann ich dann wieder nur den ganzen Text formatieren: <span class="news">$row['body']</span>blahblah

      HTML hat ja auch mit Formatierung nichts zu tun :-)

      ??? Warum das denn nicht ? Was ist mit <b><i>, etc ?

      Diese Textstellen müssen irgendwie erkannt und mit einer günstigen Struktur versehen werden, z.B. einem <span class="wasIstEsDenn"> oder einem <abbr>.
      Das oder etwas ähnliches würde die Erkennung erleichtern.

      Also doch Tags in der DB ? Was ist wenn ich die DB für irgendwelche anderen c++ Programme, etc benötige ?

      Textstellen zu markieren ist eine Sache. Ihnen Elemente beizufügen, die _völlig anderen Komponenten_ (etwa den Templates) vorbehalten sind, ist etwas ganz anderes.

      Also wie geht man professionell vor ?

      1. Hi,

        Ja, aber mit css kann ich dann wieder nur den ganzen Text formatieren: <span class="news">$row['body']</span>blahblah

        mit CSS kannst Du alles formatieren, was strukturell individuell ist.

        HTML hat ja auch mit Formatierung nichts zu tun :-)
        ??? Warum das denn nicht ? Was ist mit <b><i>, etc ?

        <b> und <i> sind die beiden einzigen der Darstellung dienenden HTML-Elemente, welche noch(!) nicht vom W3C als deprecated markiert worden sind. Zu vermeiden sind sie dennoch.

        Diese Textstellen müssen irgendwie erkannt und mit einer günstigen Struktur versehen werden, z.B. einem <span class="wasIstEsDenn"> oder einem <abbr>.
        Das oder etwas ähnliches würde die Erkennung erleichtern.
        Also doch Tags in der DB ?

        Nein. Die Textstellen müssen _erkannt_ und sinnvoll strukturiert werden, nicht vorstrukturiert abgelegt.

        Was ist wenn ich die DB für irgendwelche anderen c++ Programme, etc benötige ?

        Die müssen Deine Form der Markierung ebenfalls beachten und individuell darauf reagieren, z.B. durch Löschung derselben. Siehe es als Kodierung bzw. Maskierung an.

        Textstellen zu markieren ist eine Sache. Ihnen Elemente beizufügen, die _völlig anderen Komponenten_ (etwa den Templates) vorbehalten sind, ist etwas ganz anderes.
        Also wie geht man professionell vor ?

        Man definiert eine Form der Markierung des Textes und wandelt diese bei jedem Zugriff auf den Datenbestand in die als nächstes benötigte Kodierung um. Sprich: Man arbeitet mit Abstraktionsebenen.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Die Theorie verstehe ich.
          Wie ist in der Praxis nun am besten umzusetzen.

          1. Hallo,

            Die Theorie verstehe ich.
            Wie ist in der Praxis nun am besten umzusetzen.

            Mich würde ein kleines Beispiel der genialen Theorie von Cheatah ebenfalls sehr interessieren :)

            Schöne Grüße
            Julian

            --
            "Wer in die Fußstapfen anderer tritt, hinterlässt selbst keinen Eindruck." - Christiane Weinhold
      2. Hi,

        Was ist mit <b><i>, etc ?

        b und i sollte man eigentlich nicht mehr einsetzen... Aber egal, zurück zu Deiner Haupt-Frage.

        Also doch Tags in der DB ? Was ist wenn ich die DB für irgendwelche anderen c++ Programme, etc benötige ?

        Man muß den Text in irgend einer Form markieren, sonst geht der Sinn verloren. Inhalt und Struktur gehören zusammen, Inhalt und Layout jedoch nicht.

        Wenn Du die Daten später evtl. noch für andere Programme, bzw. Ausgabeformate benötigst, könntest Du XML für eine Medien-neutrale Strukturierung verwenden, d.h. den Text mit XML auszeichen und das in die DB schreiben. Dann kannst Du Standard-XHTML-Tags und darüber hinaus eigene Tags verwenden... Ich finde diesen Ansatz jedenfalls ziemlich cool! ;)

        MfG
        Danny

        1. Hi,

          Wenn Du die Daten später evtl. noch für andere Programme, bzw. Ausgabeformate benötigst, könntest Du XML für eine Medien-neutrale Strukturierung verwenden, d.h. den Text mit XML auszeichen und das in die DB schreiben. Dann kannst Du Standard-XHTML-Tags und darüber hinaus eigene Tags verwenden... Ich finde diesen Ansatz jedenfalls ziemlich cool! ;)

          ja :-) Er birgt allerdings die Gefahr, die Struktur als zu selbstverständlich anzusehen und sich zu sehr darauf zu verlassen; zudem wird das Erkennen von Fehlern erschwert, wenn man sich die Ergebnisse vorwiegend in einem (X)HTML-Umfeld ansieht. Daher empfehle ich, _ganz bewusst_ eine andere Form der Markierung zu wählen.

          Cheatah

          --
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Mhmmm... Da könnte was dran sein, auch wenn ich es mir im Moment schwer vorstellen kann. Du meinst jetzt aber nur XHTML, nicht XML generell? Dann nehme man doch einfach deutsche Tag-Namen, dann wird es nicht so leicht selbstverständlich... ;)

            1. Hi,

              Du meinst jetzt aber nur XHTML, nicht XML generell?

              wenn nicht eben dieses XML ausgeliefert wird: nein. Um genau zu sein ist XML in meiner (Berufs-)Praxis die Abstraktionsebene kurz vor XHTML.

              Cheatah

              --
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. Sorry aber das verstehe ich nicht so ganz.

                Was kann schlecht (abgesehen vom technischen Aufwand) daran sein, z.B. sowas in die DB zu schreiben und später in XHTML zu wandeln? :

                <artikel id="0815">
                  <titel>Das ist irgend ein Artikel</titel>
                  <untertitel />
                  <kurzbeschreibung>bla</kurzbeschreibung>
                  <inhalt>
                    <überschrift>Dummytext</überschrift>
                    <absatz>
                       blablabla<betont>bla</betont>bla
                    </absatz>
                    <absatz>
                       blablablablabla
                    </absatz>
                    <liste>
                      <eintrag>I</eintrag>
                      <eintrag>II</eintrag>
                      <eintrag>III</eintrag>
                    </liste>
                 </inhalt>
                </artikel>

                1. <artikel id="0815">
                    <titel>Das ist irgend ein Artikel</titel>
                    <untertitel />
                    <kurzbeschreibung>bla</kurzbeschreibung>
                    <inhalt>
                      <überschrift>Dummytext</überschrift>
                      <absatz>
                         blablabla<betont>bla</betont>bla
                      </absatz>
                      <absatz>
                         blablablablabla
                      </absatz>
                      <liste>
                        <eintrag>I</eintrag>
                        <eintrag>II</eintrag>
                        <eintrag>III</eintrag>
                      </liste>
                  </inhalt>
                  </artikel>

                  Aber wären das nicht die Spaltennamen ?

                  Du hast mich übrigens falsch verstanden. Ich meine wie kann man einen langen Text formatieren. Nich eine ganze Produktseite.
                  Das was du oben vorhast könne man ja besser so machen:

                  id | tag | text

                  1  | <absatz> | blahblah

                  Wäre das nicht ein riesen Datenbalast ?
                  Wie machen das denn die großen Firmen. Spiegel, Stern,etc ?
                  Die haben doch auch ALLES in der Datenbank. Sind die denn nicht in der Lage mal ein Wort in einem Text fett zu schreiben ?

                  Hmm ... wenn ich mir das so richtig überlege, habe ich das bei spiegel.de auch noch nicht gesehen. Die haben nur Absätze.

                  Aber das ist doch nicht der Sinn und Zweck von Webseiten.
                  <verzweifelt>Wie kann man dieses verflixte Problem nur effizient lösen?</verzweifelt>

                  1. Hi,

                    Spaltennamen? Nein.

                    Ich habe Dich schon richtig verstanden, der komplexe Satz mit dem Artikel war ein Beispiel wie man baumartigen Strukturen mit XML abbilden kann. In meinem Bsp.-Artikel beschreibe ich einen Text-"Artikel" (wie in einem Online-Magazin oder Weblog vorkommt...)

                    Ich meine wie kann man einen langen Text formatieren.

                    Wie im Beispiel, nur oft nicht so verschachtelt, also einfach, z.B.:

                    <absatz>
                       Text bla bla Text... <fett>Achtung</fett>: Blindtext!
                    </absatz>

                    Das was du oben vorhast könne man ja besser so machen:

                    id | tag | text
                    1  | <absatz> | blahblah

                    Du denkst zu sehr im flachen Datenbank-Schema. Hypertexte sind ja oft verschachtelt und da eignen sich schon eher Nested Sets oder XML für die Strukturierung.

                    Wäre das nicht ein riesen Datenbalast ?

                    Wie geschrieben, nur ein Beispiel. Du kannst doch genauso gut auch nur <abs> statt <absatz> schreiben oder <übs> statt <überschrift> oder eben wie XHTML also <p> und <h1>

                    Wie machen das denn die großen Firmen. Spiegel, Stern,etc ?

                    Ich nehme an, das übernimmt in den meisten Fällen ein CMS mit einfachem WYSIWYG-Editor. Dort wird oft ganz normales HTML gespeichert, meistens noch stark vermischt mit "alten" Tags wie <b>, <i>, etc..
                    Das habe ich jedenfalls schon im Quellcode einiger großen Sites gesehen und diverse Quellcodes deuten da auf CMS und Rich-Text-Edit hin...
                    Du siehst, selbst die "großen" sehen das mit der Trennung von Inhalt und Layout nicht so eng. Bisher jedenfalls. Und ich spekuliere mal darauf, dass sich das im Zeitalter von XHTML, W3C, Barrierefreiheit und Semantik bald ändern wird... Das CMS Typo3 z.B. kann in der aktuellen Standard-Version (ohne spezielle Extensions) fast schon barrierefreie, suchmaschinenfreundliche Seiten erzeugen.

                    Hmm ... wenn ich mir das so richtig überlege, habe ich das bei

                    spiegel.de auch noch nicht gesehen.

                    Kannst Du auch nicht wirklich, denn die Daten aus der DB werden vor der Ausgabe an den Browser i.d.R. nochmal speziell aufbereitet. Am Ende daher also auch HTML, bzw. Absätze. ;)

                    Wie kann man dieses verflixte Problem nur effizient lösen?

                    Das ist nicht trivial. Darüber haben sich schon viele Experten den Kopf zerbrochen.... In einigen Fällen gibts wohl nur Kompromiss-Lösungen, da das Optimum mit heuten Techniken noch nicht zu erreichen oder unperformant ist.

                    freundlichen Gruß
                    Danny

  2. Hi

    Ich habe mir das neulich auch wieder einmal überlegt. Effizient und einfach wäre wohl die folgende Methode: Du speicherst alle Texte als XHTML. Das Menü, Seitenüberschrift und solchen Kram lässt du natürlich weg. Über ein Skript holst du dir das richtige XHTML-File, liesst den Text aus und transformierst diesen, falls notwendig.

    Just my 2 cents

    Tom2

    --
    SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
    ss:| zu:) ls:& fo:) de:] va:) ch:] sh:( n4:& rl:° br:> js:| ie:% fl:( mo:}