Wie funktioniert ein CMS?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie funktioniert ein CMS?

    So, liebe Leute, ich bin mittlerweile an nem Punkt angelangt, der mir tierisch auf den Keks geht. Und zwar: Ich entwickle seit ein paar Jahren nun schon in PHP und habe auch schon einige Webseiten erfolgreich aufgesetzt und halte sie erfolgreich am Laufen.

    Doch: In den meisten Seiten fange ich so an: <? ob_start(); ?> .. Da ich in vielen Unterseiten einen header() sende um umzuleiten und keine Fehlermeldung zu kassieren.

    Leider ist dies scheinbar sehr sehr schlecht programmiert und sollte eigentlich vermieden werden, aber da ich vor dem header bereits HTML sende, war das für mich bisher immer Problematisch. Der typische Aufbau meiner Seiten sieht so aus:

    {PHP}
    {HTML}
    {PHP der den Inhalt includiert}
    {HTML}

    Wenn ich also eine Seite inkludiere, die Login erfordert, sende ich in dieser inkludierten date (wenn kein login vorhanden) einen header("Location:") zu ner anderen Seite. Da ich aber vorher HTML sende, muss ich die Ausgabe buffern.

    Das möchte ich ändern. PHP ist eine Scriptsprache und sollte auch nur dafür verwendet werden (habe ich gehört), und daher sollte Design und Script getrennt werden. Aber wie soll ich das machen? Ich habe gar keine Idee und bin auch mehrere male schon dran gescheitert. Und da ich es verstehen will, möchte ich auf kein bestehendes CMS zurückgreifen, sondern entweder selbst eines entwicklen, oder eine Lösung für mein Problem finden. Wie macht ihr das?

    // Edit: Was mir heute mittag schon in den Sinn kam war folgende Idee: Das Design komplett auslagern, via file_get_contents() einlesen und definierte Variablen ersetzen. Doch da scheitere ich am Inhalt. Ich inkludiere PHP Dateien und die werden natürlich geparst. Also müsste ich den geparsten Inhalt irgendwie an einer Variable übergeben und mittels str_replace den betreffenden "Template Tag" ersetzen ... kA
    Zuletzt geändert von stekoe2000; 09.04.2008, 02:03.
    Liebe Grüße,
    SteKoe!

    PHP Tutorials
    Peter Kropff | Quakenet | Schattenbaum.net

  • #2
    Ich behelfe mir bei sowas so, daß ich den zu inkludierenden Teil splitte:

    dateiname.head.php (wird vor dem HTML-Output eingesetzt)
    dateiname.php (Wird im HTML-Quelltext eingesetzt)

    Kommentar


    • #3
      Das MVC-Entwurfsmuster wird dir die Erleuchtung bringen. Am besten schau dir an, wie das Zend Framework das implementiert hat.
      [FONT="Helvetica"]twitter.com/unset[/FONT]

      Shitstorm Podcast – Wöchentliches Auskotzen

      Kommentar


      • #4
        Ich mag mein kleines, Dom-basiertes CMS

        Ich nehme eine xhtml-Datei mit dem Grundgerüst (head, body, ein paar divs). Diese Datei wird dann einfach in Dom eingelesen, einfache Artikel die dann aus einem Editor wie dem fckeditor kommen, werden dann einfach an die gewünschte Stelle eingehängt. Daten die aus irgendwelchen Datenbanken kommen, werden erstmal als Xml geholt und dann per Xslt ins gewünschte xhtml transformiert und dann eben auch wieder an gewünschter Stelle ins Grundgerüst eingehängt.

        Jedes Modul gibt dann noch gewisse Infos wie z.B. Seitentitel, zusätzliche CSS-Datei nötig usw. an das CMS-Hauptmodul zurück und dass erstellt dann daraus passende title und meta-Tags und bindet, falls vorhanden, die zu jeweiligen Modulen ggf. vorhandenen Css-Dateien ein.

        Zum Schluss gibts die passenden http-Header vornweg und danach wird das fertige xhtml ausgegeben - das schöne dabei: Validität gibts sozusagen gratis mit dazu.

        Es gibt also erst eine Ausgabe, wenn das ganze Ding durch ist - dadurch fällt ein Gefrickel mit ob_start(); wegen bereits gesendeten Headern weg.
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          @Quetschi: Warum nicht alles mit XSLT?
          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

          Kommentar


          • #6
            @tontechniker

            keine Ahnung - ich konnte so irgendwie besser "mitdenken"
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar


            • #7
              Original geschrieben von Quetschi
              [B]Ich mag mein kleines, Dom-basiertes CMS
              Hi, du hast den Sourcecode von dem Projekt nicht zufällig veröffentlicht? Würde mich interessieren, wie du das aufgebaut hast. (zu lernzwecken)

              Kommentar

              Lädt...
              X