Frontend-Ausgabe nach Jahreszahl filtern?

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Florian83
    Contao-Nutzer
    • 23.06.2009
    • 16

    #1

    Frontend-Ausgabe nach Jahreszahl filtern?

    Ich habe mit dem catalog/ext_catalog-Modul Felder angelegt, di ich in einer Tabelle ausgebe. Sowohl die Eingabe, als auch die Ausgabe funktionieren mit der Anpassung der Templatedateien gut.

    An einer Sache hänge ich momentan. Ich habe ein Datumsfeld mit dem Format "dd.mm.yyyy". Ich möchte auf der Ausgabeseite, also meiner Tabelle im Frontend, nur die Inhalte des aktuellen Jahres ausgeben. Die vorigen Jahre sollen als Untermenüpunkte oder Dropdownliste zur Verfügung gestellt werden.

    Wie bekomme ich dies nun hin? Mit den Conditions stehe ich auf dem Schlauch, da weiß ich nicht wie und müsste auch für jede Jahreszahl ein eigenes Modul anlegen, da wäre mit der Zeit unübersichtlich.

    Geht das irgendwie über die url?
    Wie muss ich mit dem Filter umgehen, dass es funktioniert?

    Vielen Dank für eure Hilfe! DANKE!
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo Florian83,
    das ist eine Gute Frage. Da bewege ich mich jetzt auch auf sehr unsicherem Terain für mich.
    Aber versuchen können wir das ja mal zusammen.

    Hiermit müsstest du das aktuelle Jahr bekommen (in einem Condition):
    Code:
    (date("Y",deinedatumsvariable))={{date::Y}}
    Damit müsstest du also die Items aus dem aktuellen Jahr bekommen...

    dann brauchst du noch eine Liste für die vergangenen Jahre...
    da dann eher anders:
    Code:
    (date("Y",deinedatumsvariable))<{{date::Y}}
    Damit bekommst du dann hoffentlich erst mal alle vergangenen Jahre.

    Jetzt kommt dann das Filter Template ins Spiel:
    Bei Auswahl von dem Jahr sollte das so eingestellt sein, das es auf die 2. Liste springt.
    Und du musst einen eigenen Filter basteln, indem du die Jahre aus der Tabelle liest und die als was du das auch immer haben möchtest ausgibst (z.B. Liste).

    Hoffenltich hilft dir das schon mal weiter, bis jemand hier vorbei schaut, der wirklich Ahnung hat von SQL und PHP ;-)

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

    Kommentar

    • Florian83
      Contao-Nutzer
      • 23.06.2009
      • 16

      #3
      Zitat von MacKP Beitrag anzeigen
      Hiermit müsstest du das aktuelle Jahr bekommen (in einem Condition):
      Code:
      (date("Y",deinedatumsvariable))={{date::Y}}
      Damit müsstest du also die Items aus dem aktuellen Jahr bekommen...

      dann brauchst du noch eine Liste für die vergangenen Jahre...
      da dann eher anders:
      Code:
      (date("Y",deinedatumsvariable))<{{date::Y}}
      Damit bekommst du dann hoffentlich erst mal alle vergangenen Jahre.
      Hallo MacKP,

      danke für die erste Antwort. Es funktioniert aber leider nicht. Ich habe mit den Conditions nun folgenden Erfolg erzielt:

      Code:
      meinedatumsvariable>=datum_im_raw_format_angeben
      Das Datum gebe ich als raw Daten an. Allerdings das komplette Datum des 01.01.2009, also nicht als Jahreszahl. Das ist ja nicht mein gewünschtes Ergebnis. Vor allem werden dann auch die Daten aus dem kommenden Jahr 2010 angezeigt.

      Jetzt kommt dann das Filter Template ins Spiel:
      Bei Auswahl von dem Jahr sollte das so eingestellt sein, das es auf die 2. Liste springt.
      Und du musst einen eigenen Filter basteln, indem du die Jahre aus der Tabelle liest und die als was du das auch immer haben möchtest ausgibst (z.B. Liste).
      Klingt leider so einfach, ist es für mich aber nicht. Also wenn noch jemand eine Idee hat, bitte melden.

      Danke

      Kommentar

      • Florian83
        Contao-Nutzer
        • 23.06.2009
        • 16

        #4
        Also als erste Lösung habe ich mir helfen können. Hierfür muss ich zwar für jedes Jahr ein eigenes Modul anlegen, aber es funktioniert.

        Und zwar verwende ich in den Conditions mit der Abfrage "BETWEEN ... AND ...". Ich sage, dass die Einträge zwischen zwei Tagen angezeigt werden sollen. Hierfür wähle ich z.B. den 01.01.2009 und 31.12.2009.
        Das wichtige dabei ist, dass das Datum im Unix Timestamp eingegeben werden muss. Hierfür gibt es aber sogenannte Unix Timestamp Converter (einfach in die bekannten Suchmaschinen eingeben).

        Darauf gestossen bin ich, als ich in der Datenbank gesehen habe, dass das Datum als 10-stelliger Int gespeichert wird und nicht als date. Eine Umkonvertierung des Int zum Datumsformat funktioniert in den Conditions aber nicht.

        Bei mit sieht es dann z.B. so aus:

        Code:
        meinedatumsvariable Between 1230764400 AND 1262214000
        Nicht perfekt, funktioniert aber.

        Wenn noch jemand eine bessere Idee hat, bitte einfach posten. Danke.

        Kommentar

        • MacKP
          Contao-Yoda
          • 15.06.2009
          • 13315

          #5
          Hallo Florian83,
          ich seh da im Moment auch keine wirklich schöne Lösung für dich.
          Das Problem ist, das in der DB die Werte als Timestamp drinn sind.
          Eventuell könnte man da im Template selber noch was machen, nachdem man das umgewandelt hat.
          Oder du machst das mit Taxonomy, indem du da einfach noch mal ne Liste im den Jahreszahlen machst. Das wäre am einfachsten, aber durchaus doppelte Eingabe.

          Wirklich schicke Lösungen habe ich da also nicht wirklich parat für dich.

          Viele Grüße
          Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
          [Arbeitet bei -> Paus Design & Medien]
          "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

          Kommentar

          • xtra
            Maintainer
            • 02.07.2009
            • 2007

            #6
            Dadurch dass es timestamps sind, und diese auch noch zu allem Ueberfluss als char fields abgespeichert werden muss man leider immer ein wenig basteln.

            Evtl. klappt folgendes (habe ich nicht getestet):
            Code:
            meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')
            Gruss
            Chris
            Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

            Kommentar

            • Florian83
              Contao-Nutzer
              • 23.06.2009
              • 16

              #7
              Also vielen Dank, ich werde es dann bei meiner Lösung belassen. So schlimm ist es ja auch nicht einmal im Jahr ein Modul anzulegen.

              Gruß

              Kommentar

              • MacKP
                Contao-Yoda
                • 15.06.2009
                • 13315

                #8
                Hallo Florian83,
                könntest du trotzdem mal kurz den Versuch von Xtra testen?
                Ich glaub wir haben sonst keinen der so ein Setting wie du hat im Moment. Und wäre ja ganz praktisch das zu wissen. Auf Grundlage dessen könnte man eventuell ein paar weitere Ideen entwickeln.

                Wäre super wenn du das machen könntest.

                Viele Grüße
                Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
                [Arbeitet bei -> Paus Design & Medien]
                "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

                Kommentar

                • Florian83
                  Contao-Nutzer
                  • 23.06.2009
                  • 16

                  #9
                  Ok, gerne habe ich den Vorschlag getestet. Und das ganze auch mit Erfolg!

                  Es ist sowohl
                  Code:
                  meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')
                  als auch
                  Code:
                  meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2008-01-01') AND UNIX_TIMESTAMP('2008-12-31')
                  möglich, um mit älteren Jahreszahlen zu arbeiten. {{date::Y}} gibt ja nicht anderes als die aktuelle Jahreszahl aus.

                  Da es sauber aussieht und einfach funktioniert werde ich natürlich diese Lösung nutzen.

                  Vielen Dank!

                  Kommentar

                  • MacKP
                    Contao-Yoda
                    • 15.06.2009
                    • 13315

                    #10
                    Hallo Florian83,
                    vielen Dank fürs testen ;-)

                    Viele Grüße
                    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
                    [Arbeitet bei -> Paus Design & Medien]
                    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

                    Kommentar

                    Lädt...