Contao-Camp 2024
Ergebnis 1 bis 27 von 27

Thema: Event Filterung (Tags/Kategorien): Anregungen und Meinungen

  1. #1
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard Event Filterung (Tags/Kategorien): Anregungen und Meinungen

    Hallo,

    ich möchte das Feature Filterung von Events in meine Erweiterung einzubauen.

    Jetzt stellt sich die Frage, welcher Lösungsansatz der richte, bzw. der bessere ist. Über folgende Varianten habe ich bisher nachgedacht.

    Für beide Varianten sollen alle Tags/Kategorien in einer separaten Tabelle gespeichert und mit dem Event verknüpft werden. Das ermöglicht das Anbieten vorhandener Tags/Kategorien bei neuen Events.

    1) Filterung im Event-Modul
    Hier stelle ich mir vor, dass das Modul die Tags/Kategorien aus der Tabelle liest, und diese zur Auswahl anbietet. Events werden dann nach den aktivierten Tags/Kategorien gefiltert. Hier sehe ich den Nachteil, dass man für jede Auswahl ein Ausgabe-Modul anlegen muss.

    2) Filterung im FE via jQuery
    Hier stelle ich mir vor, dass jedes Event seine Tags/Kategorien in einem Attribute (z.B.: data-filter="<json-format>") erhält, und die Events dann im FE via jQuery Skript gefiltert, sprich Ein-/Ausgeblendet werden. Hier sehe ich den Vorteil, dass sich jeder seine eigenen Funktionen zur Filterung erstellen kann. Beispiel: https://www.vrn.de/tickets/ticketuebersicht/index.html

    Jetzt würde mich eure Meinung interessieren. Welche Variante würdet ihr besser finden? Habt ihr weitere Varianten?

    Vielen Dank
    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  2. #2
    Contao-Nutzer Avatar von malle
    Registriert seit
    21.03.2012.
    Ort
    Berlin
    Beiträge
    65

    Standard

    Hallo Kester,

    ich habe gestern Abend Deine Erweiterung installiert und war sehr angetan, weil sie viele Anforderungen in einem aktuellen Projekt lösen würde.
    Leider habe in diesem Projekt auch die Anforderung tags. Das war natürlich frustrierend, als ich sah, dass das nicht zusammen funktionierte (vor allem die Anmeldung).

    Gibt es da aktuell Überlegungen, was eigenes für Tags in Events zu machen?
    Nehmen wir an, ich nutze nicht Deine Anmeldung zum Event, sind die sonstigen Konflikte mit "tags" auch nur auf der Event-Einzelseite?

    Es ist nämlich gut möglich, dass ich die Anmeldung auch nicht nutzen kann.
    Sah alles gut aus, bis ich feststellte, dass man in Leads gar nicht filtern kann. Wenn es zwanzig Events sind, möchte die Sekretärin natürlich die Anmeldung eines Events filtern können.

    Was könnte wohl so eine Erweiterung tagging im Calendar Extended kosten?

    Danke und Gruß
    Marcus Lelle
    Es gibt immer Möglichkeiten.

  3. #3
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Hallo Marcus,

    ja, es gibt (soweit ich weiß) nur da Probleme, wo der EventReader zum Einsatz kommt, weil Tags einen eigenen mitbringt. Alles andere kann funktioniere, aber ich habe es nie getestet.

    Meine aktuelle grobe Konzeption sieht so aus.

    Im Ausgabemodul (Kalendar, Eventliste...) kann man die Felder eines Events auswählen, auf die man filtern will. Diese Daten werden dann z.B. in einen Data Attribut data-event="json-data" als JSON mit ausgegeben. Im Template kann man dann via JavaScript einen oder mehrere Filter bauen. Ein einfaches Beispiel würde ich liefern, aber hier hat dann jeder die Freiheit alles damit zu machen, was er will.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  4. #4
    Contao-Nutzer Avatar von malle
    Registriert seit
    21.03.2012.
    Ort
    Berlin
    Beiträge
    65

    Standard

    Hallo Kester,

    vielen Dank für die superschnelle Antwort.

    OK. Ich muss mal weiter testen (Events, Tag und dein calendar_extended), zusammen mit einer eigenen Anmeldung (weil der Kunde viele wiederkehrende Termine hat, wo ich natürlich nicht so richtig auf die Event-ID abstellen kann. Am Schluss will der Kunde eben auch die Anmeldungen ordentlich filtern können.
    Da passt halt Leads nicht, obwohl die Dinge von terminal42 immer eine feine Sache sind.
    Ich habe auch schon an metamodels gedacht, aber da müsste ich dann auch wieder die Datumssachen integrieren, die events und deine Erweiterung alles schön mitbringen.

    Ich würde mich zeitnah noch mal melden. Vielleicht könnten wir ja eine Erweiterung von calendar extended (mit) finanzieren.

    Gruß
    Marcus
    Es gibt immer Möglichkeiten.

  5. #5
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Hi,

    erste Version der Filterung ist in der aktuellen Version enthalten. Im Listenmodul für Events wird ganz unten eine Filterung angeboten, die konfigurierbar ist. Als Standard werden dort alle Felder aus der Tabelle tl_calendar_events gelistet. Das kann über einen Array in der config.php angepasst werden.

    Bildschirmfoto 2017-11-26 um 16.13.24.png

    PHP-Code:
    // Event Filter
    $GLOBALS['TL_CONFIG']['tl_calendar_events']['filter']['title'] = '';
    $GLOBALS['TL_CONFIG']['tl_calendar_events']['filter']['location_name'] = '';
    $GLOBALS['TL_CONFIG']['tl_calendar_events']['filter']['location_str'] = '';
    $GLOBALS['TL_CONFIG']['tl_calendar_events']['filter']['location_plz'] = ''
    Das ganze fügt dem Eventeintrag in der Ausgabe ein Attribute data-filter hinzu. Jetzt muss im FE nur noch das entsprechende jQuery/JS gebaut werden, dass die Events filtert. Man kann also schon mal damit rumspielen.

    Bildschirmfoto 2017-11-26 um 16.13.41.png

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  6. #6
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    816

    Standard

    Das wird wunderbar!

    Auf der Tangowebsite wird es gut sein wenn nach Veranstaltungsorten sortiert werden kann.
    Die Contaosuche vermeide ich mit der 30MB SQL db, die führt bei den Kalendern nicht zu wirklich verwertbaren Ergebnissen.
    Mit Tags hatte ich versucht, aber statt mit Orten oder Bezeichnungen, eben mit einer sinnvollen Konsequenz zu Taggen ... das ging total schief, die Verwalter der Events schrieben alles mögliche und total sinnbefreite wie kleine Kinder

    Gruß
    dtptiger

  7. #7
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    484

    Standard

    Hallo,

    das hört sich gut an und sieht auch gut aus. ich brauche etwas ähnliches für die news. Gibt es eine Möglichkeit, das dafür umzustellen? Für jeden Ratschlag wäre ich sehr dankbar.

    Liebe Grüße,

    Jan

  8. #8
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Zitat Zitat von jenda Beitrag anzeigen
    Hallo,

    das hört sich gut an und sieht auch gut aus. ich brauche etwas ähnliches für die news. Gibt es eine Möglichkeit, das dafür umzustellen? Für jeden Ratschlag wäre ich sehr dankbar.

    Liebe Grüße,

    Jan
    Hallo Jan,

    ja, natürlich gibt es die. Allerdings nicht in meiner Erweiterung.
    Wenn du mit anderen möglichen Erweiterungen die das evtl. bieten nichts anfangen kannst, muss eine eigene Erweiterung programmiert werden.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  9. #9
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    484

    Standard

    Zitat Zitat von kmielke Beitrag anzeigen
    Hallo Jan,

    ja, natürlich gibt es die. Allerdings nicht in meiner Erweiterung.
    Wenn du mit anderen möglichen Erweiterungen die das evtl. bieten nichts anfangen kannst, muss eine eigene Erweiterung programmiert werden.

    Gruß Kester
    Danke für deine Antwort, Kester.

    Momentan versuche ich es mittels der Erweiterungen news_categories, tags und news_related umzusetzen. Siehe hier. Allerdings stehe ich vor einer großen Herausforderung, die ich in einem separaten Beitrag beschrieben habe. Falls jemand von euch einen Tipp, Ratschlag hat, würde ich mich darüber sehr freuen.

  10. #10
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    816

    Standard

    Hallo Kester,
    wunschöne Ruhige Feiertage für Dich!

    Wenn Du wiedermal hier reinschaust, gleich eine Frage zu den Tags:

    Im Ausgabemodul (Kalendar, Eventliste...) kann man die Felder eines Events auswählen, auf die man filtern will. Diese Daten werden dann z.B. in einen Data Attribut data-event="json-data" als JSON mit ausgegeben. Im Template kann man dann via JavaScript einen oder mehrere Filter bauen. Ein einfaches Beispiel würde ich liefern, aber hier hat dann jeder die Freiheit alles damit zu machen, was er will.
    Könnte ich dann in den Eventeinstellungen eigene Kategorien anbieten, z.B. "Tanzveranstaltung mit/ohne Praktika", die ich z.B. per Radiobutton anwählbar machen kann?

    So das vom Bediener definiert werden könnte, das ist eine

    - Tanzveranstaltung mit Praktika
    - Tanzveranstaltung ohne Praktika
    - nur Praktika, keine Tanzveranstaltung
    - etc

    Und der Front-End User danach Filtern kann?

    Gruß
    Achim

  11. #11
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Hallo Achim,

    danke, ich wünsche dir auch ruhige Festtage.

    Das ist der Plan wür die weiteren Versionen. Das hier war nur der erste schnelle Wurf. Wie ich allerdings hier angekündigt habe, bekommt die Version für Contao 3.5 keine Features mehr.

    Ich konzentriere mich auf Contao 4. Sich durch den ganzen Symfony-Kram durchzuwühlen dauert eh seine Zeit.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  12. #12
    Contao-Nutzer Avatar von janosch
    Registriert seit
    06.07.2009.
    Ort
    Wien
    Beiträge
    82

    Standard

    Hallo Kester,

    Das ganze fügt dem Eventeintrag in der Ausgabe ein Attribute data-filter hinzu. Jetzt muss im FE nur noch das entsprechende jQuery/JS gebaut werden, dass die Events filtert. Man kann also schon mal damit rumspielen.
    Bei mir wird das Attribut data-filter leider nicht hinzugefügt. Hatte Version 3.7.14 - auch ein Update auf 3.7.17 hat nichts verändert.

    Was mache ich falsch bzw. muss ich etwas besonderes beachten?

    @dtptiger darf ich fragen, mit welcher Version du arbeitest?
    Geändert von janosch (06.02.2018 um 10:33 Uhr)
    Why is 6 afraid of 7? Because 7 8 9.

  13. #13
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Hallo janosch,

    hast du

    PHP-Code:
     data-filter="<?= $this->filter_data ?>"
    in deinem Template?

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  14. #14
    Contao-Nutzer Avatar von janosch
    Registriert seit
    06.07.2009.
    Ort
    Wien
    Beiträge
    82

    Standard

    Danke Kester für die rasche Antwort.

    Nein, danach hab ich vergeblich gesucht:

    Das ganze fügt dem Eventeintrag in der Ausgabe ein Attribute data-filter hinzu
    Dachte das sollte dein Modul erledigen - aber dann hat sich der Sachverhalt geklärt.


    LG & vielen Dank für deine tolle Arbeit
    Why is 6 afraid of 7? Because 7 8 9.

  15. #15
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Danke.

    Das liegt daran, dass das ganze Thema noch in Arbeit ist. Der Eintrag wir dem Event hinzugefügt, aber da ich keine Event-Templates liefere, muss das natürlich ins Template aufgenommen werden.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  16. #16
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.273

    Standard

    Ich klinke mich hier mal ein bzw. abonniere dieses Thema. Ich hätte auch den Bedarf Events im Frontend nach einem Eventtyp zu filtern ohne unterschiedliche Archive zu verwenden.

  17. #17
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.273

    Standard

    Wie bekomme ich denn den Filter ins Frontend wenn ich fragen darf?

    Habe jetzt nach "Veranstaltung" Filter aktiviert und jedes Event damit versehen.

    Ausserdem habe ich dem Event Teaser Template (data-filter="<?= $this->filter_data ?>") hinzugefügt.
    Geändert von Kahmoon (14.06.2018 um 13:08 Uhr)

  18. #18
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Zitat Zitat von Kahmoon Beitrag anzeigen
    Wie bekomme ich denn den Filter ins Frontend wenn ich fragen darf?

    Habe jetzt nach "Veranstaltung" Filter aktiviert und jedes Event damit versehen.

    Ausserdem habe ich dem Event Teaser Template (data-filter="<?= $this->filter_data ?>") hinzugefügt.
    Aktuell müsstest du die eine JS/jQeury Lösung bauen, die die Daten filtert. Da gibt es sonst noch nichts.
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  19. #19
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.273

    Standard

    Achso komplett selbst bauen? Hmmm, ich glaube da reicht mein JS Wissen nicht aus

  20. #20
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Zitat Zitat von Kahmoon Beitrag anzeigen
    Achso komplett selbst bauen? Hmmm, ich glaube da reicht mein JS Wissen nicht aus
    Wenn ich mal fertig bin, ist zumindest ein nutzbares Grundgerüst da... aber keine zeit...
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  21. #21
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.273

    Standard

    Die Ausgabe von Datafilter ist auch nicht korrekt oder? Zu viele Anführungszeichen.

    Code:
    <div class="col-lg-4 col-sm-6 event layout_teaser<?php echo $this->classList; ?>" data-filter="<?= $this->filter_data ?>">
    Code:
    <div class="col-lg-4 col-sm-6 event layout_teaser regopen even first last cal_1" data-filter="{" location_name":"supermoto"}"="">

  22. #22
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.273

    Standard

    Hi,

    ich habe jetzt selbst mal einen Filter gebaut....allerdings schaffe ich es nicht auf das data-filter (von Calendar extend) zuzugreifen. Ich löse es via CSS Klassen. Außerdem wird dem aktiven Element der Filternavigation die Klasse "active" zugewiesen. Ein Beispiel könnt ihr temporär hier sehen: agentur-grenzbereich.com/de/terminkalender.html

    1. Jeder Event bekommt eine CSS Klasse

    2. Dem Kalender Listenelement die ID "termine" zuweisen

    3. Filter HTML bauen (Inhaltslement oder Modul HTML)
    Code:
    <div id="category-nav">
        <ul id="filterOptions">
            <li class="active "><a href="#" data-filter="all" class="btn btn-visible">Alle</a></li>
            <li><a href="#" data-filter="supermoto" class="btn btn-visible">Supermoto</a></li>
            <li><a href="#" data-filter="enduro-andalusien" class="btn btn-visible">Enduro Andalusien</a></li>
            <li><a href="#" data-filter="enduro-andalusien-einsteiger" class="btn btn-visible">Enduro Andalusien Einsteiger</a></li>
         </ul>
    </div>
    4. j_filter_termine.html5 erstellen und im Layout einbinden
    Code:
    <script>
    $(document).ready(function() {
      $('#filterOptions li a').click(function() {
        // fetch the class of the clicked item
        var ourClass = $(this).data("filter");
    
        // reset the active class on all the buttons
        $('#filterOptions li').removeClass('active');
        
        // update the active state on our clicked button
        $(this).parent().addClass('active');
        
        if(ourClass == 'all') {
          // show all our items
          $('#termine').children('div.layout_teaser').show();
       
        }
        else {
          // hide all elements that don't share ourClass
          $('#termine').children('div:not(.' + ourClass + ')').hide();
          // show all elements that do share ourClass
          $('#termine').children('div.' + ourClass).show();
        }
        return false;
      });
    });
    </script>

    Das funzt soweit recht gut.....die Kategorien müssen aber hardcoded werden und ich würde gerne auf das data-filter Attribut zugreifen das calendar_extend erzeugt. Aber ich finde nirgends im Netz wie man auf Attribute in dieser Form zugreifen kann.
    Code:
    data-filter="{"location_name":"Supermoto"}"
    Wobei ich bei dieser Ausgabe eh denke das es zu viele Anführungszeichen sind. Diese Ausgabe wird erzeugt durch

    Code:
    <div class="col-lg-4 col-sm-6 event layout_teaser<?php echo $this->classList; ?>" data-filter='<?= $this->filter_data ?>'>
    VG
    Geändert von Kahmoon (26.06.2018 um 16:26 Uhr)

  23. #23
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Hi Frank,

    schau mal, ob du mit $.grep() weiter kommst.

    PHP-Code:
    $.grep($(this).data('filter')['location'], function (v) {}).length
    Ich wollte schon irgendwann was als Beispiel bereitstellen, weiß aber nicht, wann ich das schaffe.
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  24. #24
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Frage dazu. Der Post ist ja schon etwas älter. Die config.php gibt es in Contao 4.9 nicht. In welche Datei muss ich in C 4.9 die Änderungen eintragen?

    Zitat Zitat von kmielke Beitrag anzeigen

    Das kann über einen Array in der config.php angepasst werden.

    Bildschirmfoto 2017-11-26 um 16.13.24.png

    PHP-Code:
    // Event Filter
    $GLOBALS['TL_CONFIG']['tl_calendar_events']['filter']['title'] = '';
    $GLOBALS['TL_CONFIG']['tl_calendar_events']['filter']['location_name'] = '';
    $GLOBALS['TL_CONFIG']['tl_calendar_events']['filter']['location_str'] = '';
    $GLOBALS['TL_CONFIG']['tl_calendar_events']['filter']['location_plz'] = ''

  25. #25
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.172

    Standard

    Wenn es dir Datei bei dir nicht gibt, stimmt was nicht. Die ist im Bundle drin.

    vendor/kmielke/calendar-extended-bundle/src/Resources/contao/config/config.php
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  26. #26
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Zitat Zitat von kmielke Beitrag anzeigen
    Wenn es dir Datei bei dir nicht gibt, stimmt was nicht. Die ist im Bundle drin.

    vendor/kmielke/calendar-extended-bundle/src/Resources/contao/config/config.php
    Danke für die schnelle Antwort. Mach mich nochmal auf die suche

  27. #27
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Gefunden

    Wie kann ich denn im Template mit dem Filter einschränken.
    Bsp.: event_upcomming.html5 nur Events mit der Postleitzahl 12345 (data-filter="{"location_plz":"12345"}") anzeigen?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •