Funktion parseDate mit ausgeschriebenem deutschen Monatsnamen verwenden?

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

    #1

    Funktion parseDate mit ausgeschriebenem deutschen Monatsnamen verwenden?

    Hi!

    Unter den TYPOlight Einstellungen kann man ja eine Datums-Formatierung angeben ... z.B. sowas hier "d. M. Y H:i".

    Netterweise wird das auch schon übersetzt, allerdings in der oben gezeigten Variante auf 3 Buchstaben gekürzt. Nach ein wenig Suche in den Dateien wurde ich in der "system/libraries/System.php" fündig, Zeile 332, Funktion "parseDate".

    Soweit ich rausgefunden habe, ist wohl im untenstehenden Switch "case 3" das was ich brauche. Allerdings weiss ich nicht, wie ich da hinkomme, weil ich den PHP-Code darüber nicht verstehe. Desweiteren ist die Backend-Hilfe auf dem kleinen roten PopUp leider nicht vollständig.

    Wie funktioniert das, dass ich in etwa so ein Datum hier erhalte:

    14. Oktober 2009

    ( Das Sahnehäubchen obenauf wäre, wenn man die Zeit separat setzen könnte (z.B. mit $this->time), statt dass alles unter $this->date Aber hierfür müsste ich dann wohl die Klasse selbst ändern (in dem Fall vom News-Modul?) - was wiederum nicht so updatefreundlich wäre. --- aber ich schweife ab ).

    Hauptsächlich wüsste ich gerne, wie ich das Datum ausgeschrieben formatiere.


    Grüße,
    Chris
  • Graf Typo
    Contao-Nutzer
    • 25.08.2009
    • 70

    #2
    Hallo Chris,

    du musst dazu gar nichts in PHP-Dateien verändern. Alle Einstellungen machst du im Backend unter System > Einstellungen. Ein ausgeschriebener Monat wird als großes F angegeben. Also: "d. F Y"

    Zur Formatierung des Datums siehe hier:


    Viele Grüße,
    der Graf

    Kommentar

    • Andreas
      Contao-Urgestein
      • 19.06.2009
      • 7709

      #3
      Hallo Chris,

      und mit $this->parseDate('d.m.y H:i',$this->time) kannst du auch in den Templates deine Datumme nochmal individuell formatieren. Schau dir aber erst mit $this->showTemplateVars() an, welche Variablen von den Templates ausgegeben werden, das muss nämlich nicht immer $this->time sein.

      Damit kriegst du dann auch noch dein Sahnehäubchen hin, denn natürlich kannst du z.B. $this->time in deinem Template auch mehrmals parsen und unterschiedlich formatieren.

      Andreas
      Bitte!
      Vor Anfragen im Forum HTML validieren.
      Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

      Vielen Dank an alle Wunschlistenerfüller
      Andreas Burg, Web Solutions

      Kommentar

      • Marotzke

        #4
        Habs ausprobiert, klappt einwandfrei - tausend Dank!

        Dass es so einfach ist hätte ich echt nicht gedacht. Wieder ein Pluspunkt für das System

        Das mit den Template-Vars notier ich mir auch (ps: dass es $this->time gibt wusste ich gar nicht ... war einfach ein Beispiel aus Wunschdenken heraus .. ich probier es mal aus).

        Kommentar

        • Marotzke

          #5
          Hallo,

          es trat leider doch noch ein unerwartetes Problem auf ... das neue Datum funktioniert zwar im Frontend, aber wenn ich nun eine neue Nachricht anlegen möchte, passiert das hier:

          Datumsformat in den Einstellungen:
          d\. F Y H:i

          Vorher (das hier stürzte auch so ab):
          d. F Y H:i

          PHP-Code:
          Fatal error: Uncaught exception Exception with message Invalid date format "d\. F Y" thrown in /pfad-zur-website/system/libraries/Date.php on line 187
          #0 /pfad-zur-website/system/libraries
          /Widget.php(540): Date->getRegexp('d\. F Y')
          #1 /pfad-zur-website
          /system/modules/backend/TextField.php(105): Widget->validator('05\. Oktobe...')
          #2 /pfad-zur-website
          /system/libraries/Widget.php(420): TextField->validator('05\. Oktobe...')
          #3 /pfad-zur-website
          /web/system/modules/backend/DataContainer.php(251): Widget->validate()
          #4 /pfad-zur-website
          /system/drivers/DC_Table.php(1473): DataContainer->row()
          #5 /pfad-zur-website
          /system/modules/backend/Backend.php(208): DC_Table->edit()
          #6 /pfad-zur-website
          /typolight/main.php(99): Backend->getBackendModule('news')
          #7 /pfad-zur-website
          /typolight/main.php(294): Main->run()
          #8 {main} 
          
          .... aber wieso wird dann das Bestehende richtig angezeigt?

          Kommentar

          • Andreas
            Contao-Urgestein
            • 19.06.2009
            • 7709

            #6
            Hat das jetzt was mit der Templatemodifikation zu tun? Welche Einstellungen, wo? Hast du den Backslash da rein gemacht? Wenn ja, wieso?

            Andreas
            Bitte!
            Vor Anfragen im Forum HTML validieren.
            Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

            Vielen Dank an alle Wunschlistenerfüller
            Andreas Burg, Web Solutions

            Kommentar

            • Atze
              Contao-Nutzer
              • 22.07.2009
              • 13

              #7
              Datumsformat bei Bildergalerie

              Hallo, ich habe gerade "parseDate" mit der Bildergalerie ausprobiert. Leider ohne Erfolg. Vieleicht auch ein Denkfehler.

              PHP-Code:
              <?php echo $this->parseDate("F Y", $this->date); ?>
              Möchte das der Monat und das Jahr ausgegeben wird.

              Wenn ich die Ausgabe so schreibe wie oben, bekommen ich Januar 1970.

              Vieleicht weiss ja jemand weiter.

              Kommentar

              • lindesbs
                AG CMS-Garden
                Contao-Urgestein
                • 05.06.2009
                • 4157

                #8
                TL schreibt basierend auf deinen Einstellungen das Datum schon um. Also musst du das wieder zurueckkonvertieren und dann in dein gewuenschtes Format wandeln :
                PHP-Code:
                <?php echo $this->parseDate("F Y",strtotime($this->date)); ?>
                Funktioniert hier mit dem Newsmodul
                von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


                Contao-Hosting: begeisterter Uberspace-Nutzer

                Kommentar

                • Atze
                  Contao-Nutzer
                  • 22.07.2009
                  • 13

                  #9
                  Hat super geklappt, vielen Dank für die schnelle Antwort.

                  Kommentar

                  • Andreas
                    Contao-Urgestein
                    • 19.06.2009
                    • 7709

                    #10
                    Hallo,

                    obwohl's ja geklappt hat noch ein Kommentar dazu.

                    Die TL-Funktion parseDate() erwartet als zweiten Parameter (dort wo bei dir am Anfang $this->date stand) einen Unix Timestamp. Das ist so eine lange Zahl, z.B. 1114131480. Das sind die Sekunden ab einem bestimmten Datum (hab ich grad nicht im Kopf) bis zu dem Datum, welches mit dieser Zahl ausgedrückt wird. $this->date liefert so eine Zahl nicht, sondern ein bereits formatiertes Datum. In den meisten Templates wird außer dem formatierten Datum $this->date aber auch ein Unix Timestamp ausgegeben, z.B. mit $this->time. Wenn dein Template das ausgibt, dann brauchst du die PHP-Funktion strtotime() nicht, sondern kannst anstelle von $this->date einfach $this->time nehmen. Ob dein Template einen Unix-Timestamp ausgibt und was es sonst noch für Variablen ausgibt kannst du dir mit $this->showTemplateVars() insTemplate geschrieben, dann im FE ausgeben lassen (im Quelltext ansehen, dort ist es eingerückt und besser lesbar).

                    Gruß Andreas
                    Zuletzt geändert von Andreas; 29.10.2009, 15:38. Grund: ergänzt
                    Bitte!
                    Vor Anfragen im Forum HTML validieren.
                    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

                    Vielen Dank an alle Wunschlistenerfüller
                    Andreas Burg, Web Solutions

                    Kommentar

                    • Atze
                      Contao-Nutzer
                      • 22.07.2009
                      • 13

                      #11
                      Hallo Andreas, ich habe mir mit
                      PHP-Code:
                      <?php echo $this->showTemplateVars(); ?>
                      die Variablen ausgben lassen.
                      Da wird das Datum als: date => 29.10.2009 ausgegeben.
                      PHP-Code:
                      <?php echo $this->parseDate("d.m.Y", $this->date); ?>
                      = nicht möglich.

                      Sonst hatte ich immer mit
                      PHP-Code:
                      <?php echo $this->parseDate("d.m.Y", $this->timestamp); ?>
                      das Datum formatiert aber das lief auch nicht so wie ich wollte :-(

                      Kommentar

                      • Andreas
                        Contao-Urgestein
                        • 19.06.2009
                        • 7709

                        #12
                        Da du nicht angegeben hast in welchem Template du die Ausgabe wünschst, du sprichst nur von Bildergalerie, habe ich mal die Templates ce_gallery.tpl, ce_gallery_fullsize.tpl, ce_dfgallery.tpl, df_default.tpl überprüft. Keins von diesen Templates gibt irgendeine Variable mit Datum oder Timestamp aus. So kann ich das natürlich nicht nachvollziehen.

                        $this->timestamp hab ich glaub ich noch nie gesehen, an $this->tstamp und $this->time meine ich mich erinnern zu können, aber wie gesagt, raten bringt da nix, einfach die Variablen ausgeben und ansehen. Übrigens die Ausgabe besser im Quelltext der FE-Ausgabe ansehen, dort ist sie eingerückt und somit lesbarer.

                        Wird dir nur ein formatiertes Datum ausgebeben, dann machst du es natürlich wie lindesbs es gezeigt hat, aber mit dem Unix Timestamp wäre es sicherer, da dort immer auch eine Uhrzeit enthalten ist und ein Timestamp immer im richtigen Format vorliegt.

                        Andreas
                        Bitte!
                        Vor Anfragen im Forum HTML validieren.
                        Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

                        Vielen Dank an alle Wunschlistenerfüller
                        Andreas Burg, Web Solutions

                        Kommentar

                        • Marotzke

                          #13
                          Hallo,

                          danke für die weitere Hilfe. In der Tat lag es am News-Modul, wo diese Art der Datumsformatierung nicht direkt unterstützt wurde.

                          @Andreas:
                          Der Backslash vor dem Punkt war nur ein Test, weil ich dachte das wird sonst als regulärer Ausdruck und nicht als Punkt betrachtet (ohne Backslash klappte auch nicht).


                          Ich probiere beide Varianten heute mal aus, danke!

                          Kommentar

                          Lädt...