Christoph Gottschlich: Kleines Cms (wusste keinen anderen Namen)

Ich bin noch ein ziemlicher Anfänger und lerne erst noch.
Aber ich bräuchte dringend ein kleines Cms.
Und zwar bin ich gerade an einer Homepage für meine Arbeit (einem Kinderhort)
und dort gibt es jede Woche einen neuen Speiseplan. Diesen Speiseplan wollte ich jede Woche neu auf die Homepage schreiben.
Dieser Speiseplan sollte einfach über eine allgemeine ACP die schon die restlichen  funktionen der Seite steuert veränderbar sein.
Vorgestellt hatte ich mir einfach eine Art Beitragsschablone im ACP wo ich nur Datum und die Speise eintragen muss um den Speiseplan zu ändern.
Oder so ähnlich wie bei dem Forum hier ein Nachrichtenfeld in dem eine Beitragsschablone vorhanden ist. Diese Variante wäre mir sogar am liebsten.
hat jemand einen Tip oder eine Ahnung davon wie ich das anstellen kann?

Mit freundlichen Grüßen Christoph

  1. Hi Christoph!

    Ich sehe dies als Chance für dich, mit xml anzufangen; warum?
    1. Für ein echtes CMS ist die Aufgabe wohl zu "popelig"...
    2. In xml/xsl erfolgt eine Trennung von Darstellung und Inhalt;
    Du erstellst also einmalig:

    • eine xml Dokumentstruktur
    • ein darstellendes Stylesheet
      Danach kannst du gemütlich über einen Texteditor die xml Datei ändern; dabei ist es kein Problem, die "richtige Stelle" zu finden.
      Und solltest du diese Änderung nicht "von Hand" sondern mittels Servermaske vornehmen wollen, so weise ich darauf hin, dass meines Wissens alle serverseitigen Sprachen über ein (optionales) DOM-Modul verfügen...

    xml a la:
    *********
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="./kinderhort.xsl"?>

    <kinderhort>
      <speiseplan date="24.2.2008">
        <gericht name="Spaghetti" description="lecker Spaghetti Bolognese" price="2,80Euro" />
        <gericht name="Pizza" description="lecker Pizza" price="3,60Euro" />
      </speiseplan>
    </kinderhort>

    • Stylesheet, hier kinderhort.xsl:
      **********************************
      <?xml version="1.0" encoding="iso-8859-1"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html"/>

    <xsl:template match="/">
    <html>
    <head>
      <xsl:call-template name="genTitle"/>
      <style type="text/css">
     table {border:1px solid black;}
            td    {border:1px solid green;}
      </style>
    </head>
    <body>
      <xsl:apply-templates />
    </body>
    </html>
    </xsl:template>

    <xsl:template name="genTitle">
      <title>Kinderhort Speiseplan am <xsl:value-of select="//speiseplan/@date"/></title>
    </xsl:template>

    <xsl:template match="speiseplan">
    <table>
      <tbody>
        <xsl:apply-templates />
      </tbody>
      <thead>
        <tr><th>Gericht</th><th>Beschreibung</th><th>preis</th></tr>
      </thead>
    </table>
    </xsl:template>

    <xsl:template match="gericht">
    <tr>
      <td><xsl:value-of select="./@name" /></td>
      <td><xsl:value-of select="./@description" /></td>
      <td><xsl:value-of select="./@price" /></td>
    </tr>
    </xsl:template>

    </xsl:stylesheet>

    Viele Grüsse,
    Richard

  2. Hallo Christoph!

    und dort gibt es jede Woche einen neuen Speiseplan. Diesen Speiseplan wollte ich jede Woche neu auf die Homepage schreiben.
    Dieser Speiseplan sollte einfach über eine allgemeine ACP die schon die restlichen  funktionen der Seite steuert veränderbar sein.
    Vorgestellt hatte ich mir einfach eine Art Beitragsschablone im ACP wo ich nur Datum und die Speise eintragen muss um den Speiseplan zu ändern.

    Also prinzipiell ist Richards Vorschlag das Ganze mit XML zu machen natürlich nicht verkehrt. Allerdings bezweifel ich, ob das gerade für einen "Anfänger" (ist nicht böse oder herablassend gemeint) das Richtige ist.

    Was mir aus deinem Posting noch nicht so ganz ersichtlich ist, ist die Frage, ob auch die alten Speisepläne nachträglich noch zugänglich sein sollen, oder nur der jeweils Aktuelle?

    Denn wenn du nur jeweils den aktuellen Speiseplan haben möchtest, dann kannst du am aller einfachsten eine statische HTML-Datei erstellen, die du dann von Woche zu Woche änderst. Alles andere wäre mir persönlich ansonsten schon zu aufwendig, weil schlicht nicht notwendig.

    Anders sieht die Sache aber schon aus, wenn auch die alten Speisepläne noch abrufbar sein sollen. Dann würde sich ggf. das Speichern der Daten in einer DB oder in Textfile(s) anbieten.

    Welche Möglichkeiten stehen dir denn auf dem Webspace zur Verfügung (PHP, MySQL)?

    Gruß Gunther

    1. Nein die alten Speisepläne sollen nicht gespeichert werden.
      Es geht aber schon darum, dass dies alles über ACP steuerbar ist, damit auch wenn mein Jahres FSj abgelaufen ist die Betreiber die Speisepläne ändern können!

      1. Hallo!

        Nein die alten Speisepläne sollen nicht gespeichert werden.

        Ah, OK.

        Es geht aber schon darum, dass dies alles über ACP steuerbar ist, damit auch wenn mein Jahres FSj abgelaufen ist die Betreiber die Speisepläne ändern können!

        So nach und nach kommen ja die Infos ans Licht. Wenn dir also bspw. PHP(5) zur Verfügung steht auf dem Webspace, dann würde ich die Daten einfach in eine Textdatei schreiben und daraus auslesen.
        Siehe: http://de.php.net/manual/de/function.file-put-contents.php

        Es bleibt natürlich dir überlassen, wie aufwendig du die "Eingabe-Maske" gestalten willst. Also ob etwa für die ganze Woche in einem oder für jeden Tag separat.

        Für die Anzeige/ Ausgabe erstellst du dir eine entsprechende PHP-Datei (oder HTML-Datei, die ebenfalls geparst wird), wo die jeweiligen Platzhalter durch die Daten aus der Textdatei ersetzt werden.

        Gruß Gunther

        1. Ja mir steht PHP 5 zur verfügung.
          Von mir aus kann es sehr aufwendig seihen.
          Wichtig ist mir, dass ich im ACP wie hier ein Textfeld habe in das ich Text eintragen kann.
          Weiterhin wäre es Hilfreich wenn in dem Textfeld schon eine Beitragsschablone wäre.

          Also ein Textfeld in dem schon steht

          Montag:
          Dienstag:
          Mittwoch:

          etc.

          wodurch man dann auch HTML anwenden könnte und die schablone mit tables versehen werden kann.

          1. Hi!

            Ja mir steht PHP 5 zur verfügung.

            OK, sehr gut. Dann könntest du es ja wie bereits geschrieben (Daten in Textdatei) machen.

            Von mir aus kann es sehr aufwendig seihen.

            Na dann viel Spaß ... ;-)

            Wichtig ist mir, dass ich im ACP wie hier ein Textfeld habe in das ich Text eintragen kann.

            Das dürfte ja das kleinst deiner Probleme sein.

            Weiterhin wäre es Hilfreich wenn in dem Textfeld schon eine Beitragsschablone wäre.

            Also ein Textfeld in dem schon steht

            Montag:
            Dienstag:
            Mittwoch:
            etc.

            Ich würde dann vielleicht eher für jeden Tag ein separates Textfeld machen. Und was die Textvorbelegung angeht siehe http://de.selfhtml.org/html/formulare/eingabe.htm#bereiche_vorbelegung

            wodurch man dann auch HTML anwenden könnte und die schablone mit tables versehen werden kann.

            Das verstehe ich nicht ganz. Dateneingabe und spätere Ausgabe/ Anzeige der Daten sind doch zwei verschiedene Paar Schuhe, die nichts miteinander zu tun haben.

            Überhaupt ist mir nicht ganz klar, wo jetzt dein Problem liegt?
            Ich fasse daher mal zusammen, was ich bis jetzt zu wissen glaube:

            • Du hast jede Woche Daten für einen wöchentlichen Speiseplan.
            • Alte Daten sollen nicht "archiviert" werden, sondern es gibt jeweils für jeden Tag nur jeweils einen Datensatz.
            • Die Daten sollen über eine Eingabemaske (Formular) auf einer Webseite einzugeben/ zu verändern sein.

            Soweit richtig?

            Nachdem du die Daten ja nicht "hardcoded" direkt in einer HTML-Datei speichern willst, musst du folglich irgendeine Methode zur Datenspeicherung verwenden. Neben der Möglichkeit der Speicherung in einer DB bietet sich bei der geringen Datenmenge und der Änderungshäufigkeit imho die Speicherung in einer einfachen Textdatei an.

            Ferner brauchst du auch noch (mind.) zwei Seiten:

            • Eine Seite zur Ausgabe/ Darstellung der gespeicherten Daten
            • Eine Seite zur Eingabe/ Pflege der Daten

            Das alles lässt sich sehr einfach und ohne großen Aufwand z.B. mit PHP realisieren.

            Also worin genau besteht jetzt dein Problem?

            Gruß Gunther

            1. Ich würde dann vielleicht eher für jeden Tag ein separates Textfeld machen. Und was die Textvorbelegung angeht siehe http://de.selfhtml.org/html/formulare/eingabe.htm#bereiche_vorbelegung

              »»
              Dnake für den Tip, ich werde mir es gleich nach der Arbeit anschauen!

              wodurch man dann auch HTML anwenden könnte und die schablone mit tables versehen werden kann.
              Das verstehe ich nicht ganz. Dateneingabe und spätere Ausgabe/ Anzeige der Daten sind doch zwei verschiedene Paar Schuhe, die nichts miteinander zu tun haben.

              Überhaupt ist mir nicht ganz klar, wo jetzt dein Problem liegt?
              Ich fasse daher mal zusammen, was ich bis jetzt zu wissen glaube:

              • Du hast jede Woche Daten für einen wöchentlichen Speiseplan.
              • Alte Daten sollen nicht "archiviert" werden, sondern es gibt jeweils für jeden Tag nur jeweils einen Datensatz.
              • Die Daten sollen über eine Eingabemaske (Formular) auf einer Webseite einzugeben/ zu verändern sein.

              Soweit richtig?

              Nachdem du die Daten ja nicht "hardcoded" direkt in einer HTML-Datei speichern willst, musst du folglich irgendeine Methode zur Datenspeicherung verwenden. Neben der Möglichkeit der Speicherung in einer DB bietet sich bei der geringen Datenmenge und der Änderungshäufigkeit imho die Speicherung in einer einfachen Textdatei an.

              Ferner brauchst du auch noch (mind.) zwei Seiten:

              • Eine Seite zur Ausgabe/ Darstellung der gespeicherten Daten
              • Eine Seite zur Eingabe/ Pflege der Daten

              Das alles lässt sich sehr einfach und ohne großen Aufwand z.B. mit PHP realisieren.

              Also worin genau besteht jetzt dein Problem?

              Mein Problem liegt darin, dass ich ein Texteingabefenster, im ACP,brauche welches auch HTML fähig ist, dass ich tabellen posten kann.
              Ich will mich jetzt mal garnicht an einem Speiseplan festlegen sondern allgemein an einer Seite die ich per Texteingabefenster verändern kann.

              Und nun suche ich Hilfe dies zu machen^^.
              Deinen Link schaue ich mir nachher gleich an.
              Wichtig wäre mir wirklich nur, dass ich ein Texteingabefeld im ACP habe.
              In dieses Feld trage ich dann Text ein oder schreibe einen HTML code für den "Speiseplan" rein und dann verändert sich beim Abschicken die Seite auf der Homepage.

              Danke für die bisherige Hilfe!

              1. Hi Christoph!

                Ich würde dann vielleicht eher für jeden Tag ein separates Textfeld

                Ferner brauchst du auch noch (mind.) zwei Seiten:

                • Eine Seite zur Ausgabe/ Darstellung der gespeicherten Daten
                • Eine Seite zur Eingabe/ Pflege der Daten

                Das alles lässt sich sehr einfach und ohne großen Aufwand z.B. mit PHP realisieren.

                Also worin genau besteht jetzt dein Problem?

                Mein Problem liegt darin, dass ich ein Texteingabefenster, im ACP,brauche welches auch HTML fähig ist, dass ich tabellen posten kann.
                Ich will mich jetzt mal garnicht an einem Speiseplan festlegen sondern allgemein an einer Seite die ich per Texteingabefenster verändern kann.

                Ah, so langsam dämmert mir, wo dein "Verständnisproblem" liegt.
                Du solltest auf gar keinen Fall dein "System" so aufbauen, dass man in das/ die Textfeld/er HTML oder sonstigen Code eingeben kann/muss!
                In die Textfelder wird nur reiner Text (in deinem Fall also das jeweilige Tagesmenü) eingegeben. Und die Seite(n) für diese Eingaben ist/sind_andere_, als die für die Ausgabe/ Anzeige des Speiseplans.

                Schon vom System her muss das ja so sein, denn vermutlich soll sich ja jeder den Speiseplan im Web angucken können, aber nicht jeder Zugriff auf das ACP haben!

                Wichtig wäre mir wirklich nur, dass ich ein Texteingabefeld im ACP habe.
                In dieses Feld trage ich dann Text ein

                soweit i.O.

                oder schreibe einen HTML code für den "Speiseplan" rein

                auf keinen Fall - s.o.

                und dann verändert sich beim Abschicken die Seite auf der Homepage.

                Natürlich tut sie das. Die Seite bezieht ihre Daten ja aus der Quelle, wo die Daten, die im ACP eingegeben werden, abgelegt werden. Also bspw. aus einer Textdatei.

                Folgende Dinge solltest du (noch) berücksichtigen:

                • Dein ACP sollte Zugangsgeschützt sein, bspw. über eine HTTP Authentifizierung
                • Die Eingaben über das ACP sollten vor dem Speichern unbedingt auf ihre "Gültigkeit" hin überprüft werden (damit kein Schad-Code eingeschleust werden kann).

                Noch eine letzte Anmerkung:
                Da du ja immer nur einen "Wochen-Speiseplan" haben willst, hat das den Nachteil, dass man die jeweils neuen Daten erst dann eingeben kann, wenn die bisherigen Daten ihre Gültigkeit verlieren. Denn sobald man ja neue Daten eingibt, überschreiben diese die bisherigen Daten.
                Alternativ könntest du bspw. auch jeden Speiseplan extra abspeichern (SP_KW_12_08, SP_KW_13_08, ...) und auf der Anzeigeseite als Default den jeweils aktuellen (über das Datum gesteuert) anzeigen lassen, mit der Option, auch schon den für die kommende Woche (soweit schon vorhanden) anzeigen zu lassen. Und beim Aufruf des ACP prüfst du, ob noch ältere Dateien existieren und lässt diese ggf. löschen, damit der Server nicht mit den alten Speiseplänen "zugemüllt" wird.

                Gruß Gunther

                1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                         "http://www.w3.org/TR/html4/strict.dtd">
                  <html>
                  <head>
                  <title>Speiseplan Eingabe</title>
                  </head>
                  <body>

                  <h1>Montag</h1>

                  <form action="textarea.htm">
                    <p>Eingabe Montagsgericht:<br>
                      <textarea name="user_eingabe" cols="50" rows="10"></textarea>
                    </p>
                  </form>

                  <h2>Dienstag</h2>

                  <form action="textarea.htm">
                    <p>Eingabe Dienstagsgericht:<br>
                      <textarea name="user_eingabe" cols="50" rows="10"></textarea>
                    </p>
                  </form>

                  </body>

                  ------------------------------------------------------------------

                  Ginge das so?
                  Habe es jetzt nicht ausprobiert da ich wieder mal an der Arbeit bin, aber ich selber denke schon nicht.
                  Kurze Frage jetzt habe ich dort oben die Eingabefelder wie arbeite ich jetzt weiter?
                  Irgendwo muss es ja jetzt ausgegeben werden.

              2. Hi.

                Mein Problem liegt darin, dass ich ein Texteingabefenster, im ACP,brauche welches auch HTML fähig ist, dass ich tabellen posten kann.

                Ich weiß zwar immer noch nicht, was ACP heißt, aber Textile kann auch HTML-Text verarbeiten.

                Ich will mich jetzt mal garnicht an einem Speiseplan festlegen sondern allgemein an einer Seite die ich per Texteingabefenster verändern kann.

                Und was spricht gegen Textile, eingebettet in Textpattern als CMS? Das wäre auch sicherer, als selbst etwas auf die Schnelle zu stricken, das hinterher kein Mensch mehr warten kann – eine Kindergärtnerin schon gar nicht. ;-)

                vg Bud

                1. Hi Bud.

                  Ich weiß zwar immer noch nicht, was ACP heißt,

                  Ich habe es als AdminControlPanel interpretiert. So ist mir das jedenfalls von anderen Scripts her bekannt.

                  aber Textile kann auch HTML-Text verarbeiten.

                  In meinen Augen wäre es blanker Unsinn bei diesem Anwendungsfall HTML oder irgendeinen sonstigen Code eingeben zu müssen/ können. Denn die Anzeige des Speiseplans wird ja vermutlich immer gleich aussehen sollen.

                  Und was spricht gegen Textile, eingebettet in Textpattern als CMS?

                  Ich weiß ja nicht, was schon an Seiten vorhanden ist. Und die Speiseplan Geschichte ist ja nun wirklich eher klein vom Umfang her. Also warum sollte man sich extra dafür in ein CMS einarbeiten, es an sein vorhandenes Layout anpassen, bzw. in seine bereits vorhandenen Seiten integrieren? Mir wäre das in diesem Fall zu aufwendig.

                  Das wäre auch sicherer, als selbst etwas auf die Schnelle zu stricken, das hinterher kein Mensch mehr warten kann – eine Kindergärtnerin schon gar nicht. ;-)

                  Na ja, also für 5 oder 6 Tage in der Woche je ein Texteingabefeld zu machen und zu verhindern, dass dort etwas anderes als reiner Text reinkommt, der in einer Textdatei gespeichert wird, ist nun wirklich keine so große Nummer. Und unterschätze die Kindergärtnerinnen nicht ;-)!

                  Gruß Gunther

  3. Hi.

    Oder so ähnlich wie bei dem Forum hier ein Nachrichtenfeld in dem eine Beitragsschablone vorhanden ist. Diese Variante wäre mir sogar am liebsten.

    Wenn man diesen Text ...

    |_. Montag|_. Dienstag|_. Mittwoch|_. Donnerstag|_. Freitag|
    |Gemüse, Nudeln, Reis, Kartoffeln, Brot|Gemüse, Nudeln, Reis, Kartoffeln, Brot|Gemüse, Nudeln, Reis, Kartoffeln, Brot|Gemüse, Nudeln, Reis, Kartoffeln, Brot|Gemüse, Nudeln, Reis, Kartoffeln, Brot|

    ... in  Textile eingibt, kommt das heraus:

      
     <table>  
      <tr>  
       <th>Montag</th>  
       <th>Dienstag</th>  
       <th>Mittwoch</th>  
       <th>Donnerstag</th>  
       <th>Freitag</th>  
      </tr>  
      <tr>  
       <td>Gemüse, Nudeln, Reis, Kartoffeln, Brot</td>  
       <td>Gemüse, Nudeln, Reis, Kartoffeln, Brot</td>  
       <td>Gemüse, Nudeln, Reis, Kartoffeln, Brot</td>  
       <td>Gemüse, Nudeln, Reis, Kartoffeln, Brot</td>  
       <td>Gemüse, Nudeln, Reis, Kartoffeln, Brot</td>  
      </tr>  
     </table>
    

    Textile ist Bestandteil der Blog-Software Textpattern, die auch sehr gut als CMS einsetzbar ist. Das Backend ist sehr übersichtlich, so dass auch Web-Laien sich schnell zurecht finden können. Wäre einen Versuch wert.

    vg Bud

  4. Theoretisch könnte ich doch auch fällt mir gerade ein:

    Ich könnte doch eine Tabelle auf meinem MAsql Ordner anlegen mit

    Montag Dienstag Mittwoch Donnerstag Freitag

    Die Eingabe in die Tabelle funktioniert dann per Eingabefeld, wobei ich noch rausfinden muss wie ich die Daten vom Eingabefeld zu der Tabelle übermittle.

    Und dann kann ich eine HTML Tabelle anlegen die die Daten per PHP aus dem MYsql Ordner abfragt.

    Oder?