Ankündigung

Einklappen
Keine Ankündigung bisher.

Listenelemente nur ausgeben, wenn Werte in Kindtabelle zutreffen

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

  • Listenelemente nur ausgeben, wenn Werte in Kindtabelle zutreffen

    Hi,

    ich erstelle gerade eine weitere Online-Messe für einen Kunden. Da die Messe in Zukunft immer Dual sein soll, habe ich 3 Tabellen angelegt:
    • Messedaten ( steuert Sichtbarkeit, hält Titel, Start- und Enddatum bereit )
    • Aussteller ( Kerndaten des Unternehmens )
    • Messestand des Unternehmens ( Messespezifische Inhalte, Status im Evaluierungsprozess )
    Ein Messestand ist per se nur für eine Messe gültig, wird per ID einem Eintrag in den Messedaten zugeordnet. In meiner Liste sollen nur Aussteller erscheinen, wenn der neueste Messestand evaluiert wurde und die zugeordnete Messe veröffentlicht ist. Als reines SQL Query würde das wohl so aussehen:

    Code:
    SELECT e.id, s.pid, s.application_accepted, s.expdata, exp.id as eid, exp.published
    FROM cc_i_exhibitors e INNER JOIN cc_i_fairstands s ON e.id = s.pid INNER JOIN cc_i_exdata exp ON s.expdata = exp.id
    WHERE application_accepted = 1 AND published = 1
    ORDER BY expdata DESC LIMIT 0,1
    Wie bzw. wo muss ich nun in Liste & Filter ran?

    Vielen Dank vorab!
    Zuletzt geändert von wortberge; 27.12.2021, 12:26.

  • #2
    Hi,
    für komplexe Bedingungen, die über die Grenzen der Haupttabelle hinausgehen, gibt des den Hook-Callback Filter. Der Filter ruft die registrierte Callback-Funktion auf, die als Rückgabewert die darzustellenden IDs (Array: return array(1,2,3...); ) beinhaltet.

    Ein Beispiel ist direkt bei CC enthalten. Suche im CC Modulordner nach HookExample.php

    Dieser Callback ist vorinstalliert:
    PHP-Code:
    $GLOBALS['CUSTOMCATALOG_HOOKS']['hookfilter']['myFilterExample'] = array('PCT\CustomElements\Filters\Hook\HookExample','myHookFilterCallback'); 
    Sonst entspricht das alles dem Contao Standard

    Code:
    class HookExample
    {
    /**
    * Example method called by a hook filter registered in $GLOBALS['CUSTOMCATALOG_HOOKS']['hookfilter']['myFilterExample']
    * Filters the list by the entry ids: 1,2,3
    * @param object The CustomCatalog calling the filter
    * @param object The Filter itself
    * @return array An array with the ids
    */
    public function myHookFilterCallback($objCustomCatalog,$objFilter)
    {
    return array(1,2,3);
    }
    }
    Zuletzt geändert von Tim; 27.12.2021, 12:56.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Sorry, i'm late...

      Mit dem HookExample konnte ich das ohne Probleme umsetzen. Wenn ich einen Eigenen anlege, wird die Klasse des Hooks nicht gefunden. Ich werde mir das dann nochmal in Ruhe ansehen müssen. Vorerst ist das aber mal gelöst.

      Vielen Dank für Deinen Support und ein gesundes, erfolgreiches 2022!

      Kommentar


      • #4
        Zitat von wortberge Beitrag anzeigen
        Sorry, i'm late...

        Mit dem HookExample konnte ich das ohne Probleme umsetzen. Wenn ich einen Eigenen anlege, wird die Klasse des Hooks nicht gefunden. Ich werde mir das dann nochmal in Ruhe ansehen müssen. Vorerst ist das aber mal gelöst.

        Vielen Dank für Deinen Support und ein gesundes, erfolgreiches 2022!
        Deine Erweiterung muss seitens der Ladereihenfolge nach CC laden. Alternativ kann auch die initconfig.php genutzt werden.

        Ich habe im Hook einen strikten Schlüssel angegeben "myFilterExample". Vergebe du einen eigenen neuen Schlüssel oder erweitere den Array via [].
        http://www.premium-contao-themes.com

        Kommentar

        Lädt...
        X