Ergebnis 1 bis 12 von 12

Thema: BE [DCA] -> MODE 6 -> Sorting -> Filter funktioniert nicht?, Alternative?

  1. #1
    Contao-Nutzer
    Registriert seit
    05.01.2013.
    Beiträge
    4

    Standard BE [DCA] -> MODE 6 -> Sorting -> Filter funktioniert nicht?, Alternative?

    Hallo Community,

    erstmal allen Lesern Alles GUTE für das neue Jahr .

    Referenzierend auf den folgenden Eintrag: https://github.com/contao/core/issues/4210 habe ich das gleiche Problem:

    Die Filter Option, bspw.
    Code:
    'filter' => array(
    array('titel = ?', 'HALLO WELT')
    )
    egal ob in der DCA des "Parent" oder dem "Child" Eintrages wird nicht berücksichtigt. Auch die Einschränkung per 'root' => array('11','12') wird m.E. nicht berücksichtigt.
    In der DC_Table konnte ich auch nicht manuell auf die Werte zu greifen.

    Meine Frage bzw. Bitte:
    Gibt es eine Möglichkeit mit Hilfe eines onload_callbacks die Datensätze der Ausgabe zu filtern? Also evtl. zusätzlich einen "SQL-Where" Tag hinzuzufügen?

    Über einen Gedankenanstoß würde ich mich sehr freuen - wenn ich mich unklar ausgedrückt haben sollte, bitte nachfragen

    vielen DANK
    und noch einen schönen Abend

    GQ

    Benutze Contao 3, Mode 6 (Child) u. Mode 5 (Parent)

  2. #2
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du kannst nur die oberste Ebene einschränken. Kindelemente eines erlaubten Elements werden nicht gefiltert.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  3. #3
    Contao-Nutzer
    Registriert seit
    05.01.2013.
    Beiträge
    4

    Standard

    Guten Morgen,

    vielen DANK für die schnelle Antwort: Klasse!

    Wie schränke ich die oberste Stufe ein?
    Den Array 'root' => Array(0,1) berücksichtigt m.E. sowohl die Parent als auch die Kind Klasse nicht ... Sobald ich in der DB die pid <> 0 setze erscheint auch kein Eintrag mehr in der Ausgabe ...

    Als Frage formuliert:
    Wäre es 'irgendwie' möglich, dass man bspw. alle Parent-Einträge nur mit der pid=1 usw. ausgibt?

    Der Hintergrund meiner Frage, ich möchte gerne einzelnen Benutzern - je nach Rechtevergabe - nur bestimmte Einträge in der Treeview anzeigen. Evtl. kann man das ja auch eleganter lösen?

    Herzlichen DANK Andreas

    GQ

  4. #4
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Mit list > sorting > root müsste das schon gehen. Beachte aber dass dein Baum bei 0 beginnen muss (eine DB-Änderung wird also nicht einfach so funktionieren).
    Schau dir am besten wie der Core das macht, z.B. beim Node-Filter (klick auf den Baum-Namen) oder den Benutzerberechtigungen.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  5. #5
    Contao-Nutzer
    Registriert seit
    05.01.2013.
    Beiträge
    4

    Standard

    Gt. Morgen und vielen DANK für den Hinweis Andreas,

    den gleichen Ansatz wie du habe ich logisch gedacht, aber technisch wahrscheinlich falsch umgesetzt:

    Wenn ich mir in der tl_article anschaue, wie der Pagemount gesetzt wird:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_page']['list']['sorting']['root'] = $this->User->pagemounts
    habe ich in der gleichen Logik sowohl in meiner Parent- alsauch in der Kinder-DCA den folgenden Root Eintrag unter Sorting gesetzt
    PHP-Code:
     'root' => array(0=>121=>24), 
    .

    Selbst wenn ich wie in der Wiki den Eintrag
    PHP-Code:
     'root' => array(12,24
    setze, passiert keine Einschränkung im Select (auch nicht ersichtlich im Debug Mode) ...

    Wahrscheinlich habe ich die Logik noch nicht verstanden, deswegen wäre es sehr nett, wenn du mir das Folgende erklären könntest:
    BAUM (pid=0, id=1)
    Erste Ebene (pid=1, id=5)
    Erstes Kind (pid=5)
    Zweite Ebene (pid=1, id=6)
    Zweites Kind (pid=6)

    Wie müsste das root Array aussehen, sodass nur die zweite Ebene angezeigt wird? Muss die Einschränkung im Parent-DCA (bei mode 5 od. 6) erfolgen?
    Normalerweise kommt "man" weiter, indem man einfach ausprobiert. Nur leider reagiert das DCA überhaupt nicht auf den root Eintrag und zeigt -
    egal was ich angebe - immer alle Einträge an ...

    Vielen DANK

    PS: Mit dem TANSTAAFL Prinzip im Hinterkopf: Das nächste Mal vergebe ich dir das Modul gleich als Auftrag - dachte nur, dass es deutlich einfacher wäre ;-).

    GQ

  6. #6
    Contao-Nutzer
    Registriert seit
    05.01.2013.
    Beiträge
    4

    Standard

    ... für diejenigen, die ein ähnliches Problem haben: Man muss in der DCA der Child Tabelle einen ROOT Eintrag für die DCA der Parent Tabelle erstellen. Dann funktioniert's .

  7. #7
    Contao-Nutzer Avatar von pout
    Registriert seit
    23.06.2009.
    Ort
    Wien
    Beiträge
    121
    User beschenken
    Wunschliste

    Standard

    Hallo,

    könntest Du das etwas genauer ausführen? Ich habe wohl ein ähnliches Problem.
    Ich möchte für eine bestimmte Benutzergruppe nur die Artikel in der Hauptspalte auflisten.
    Ich habe:

    $GLOBALS['TL_DCA']['tl_article']['config']['onload_callback'][] = array('tl_article_permissions', 'getArticlesMaincolumn');
    PHP-Code:
    class tl_article_permissions extends tl_article
    {       
        public function 
    getArticlesMaincolumn()
        {    
            if (
    in_array('1'$this->User->groupstrue)) 
            { 
                
    $GLOBALS['TL_DCA']['tl_article']['list']['sorting']['root'] = array('11'); //oder lieber
                
    $GLOBALS['TL_DCA']['tl_article']['list']['sorting']['filter'] = array(array('inColumn=?','main'));
            }
        }

    beides Funktioniert bei mode 6 nicht.
    Danke Roman
    Geändert von pout (03.04.2013 um 20:29 Uhr)

  8. #8
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die Einträge der tl_article (einem DCA in Mode 6) kannst du nicht filtern, das ist in der DC_Table von Contao 2.11 nicht implementiert. Du kannst lediglich die Seiten einschränken, welche dargestellt werden sollen.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  9. #9
    Contao-Nutzer Avatar von pout
    Registriert seit
    23.06.2009.
    Ort
    Wien
    Beiträge
    121
    User beschenken
    Wunschliste

    Standard

    Danke Andreas.
    Ich habe es jetzt so gelöst. Da diese Redakteure nur einen (vielleicht einmal ein wenig mehr) Artikel bearbeiten dürfen, ist das übersichtlich genug.

    In einer eigenen tl_article.php:
    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');

    if (
    $this->Input->get('do')=='article' && !($this->Input->get('table'))) {
        
    // 1 = Group id of "Kreis Redakteur"; Special article listing only for this User Group
        
    if (in_array('1'$this->User->groupstrue))  
        {   
            
    // change sorting mode for this UserGroup
            
    $GLOBALS['TL_DCA']['tl_article']['list']['sorting']['mode'] = 0;  
            
    $showOnlyMaincolumn = new tl_article_main
            
    $GLOBALS['TL_DCA']['tl_article']['list']['sorting']['root'] = $showOnlyMaincolumn->getArticlesMaincolumn();
        }    


    class 
    tl_article_main extends tl_article
    {
        
        public function 
    getArticlesMaincolumn()
        
    /* returns ids of Articles in Column "main" of Pagemounts from Current User */ 
        
    {           
         
           
    $objArticle $this->Database->execute("SELECT id FROM tl_article WHERE pid IN(".implode(','$this->User->pagemounts).") AND inColumn='main' ORDER BY sorting");
                                         
           if (
    $objArticle->numRows 0)
           {
                
    $rows $objArticle->fetchAllAssoc();
                foreach (
    $rows as $row) {
                    
    $ids[] = $row['id'];
                }
            }     
            return (
    $ids);   
        }
    ?>
    Das Ganze in einem onload_callback hat nicht funktioniert. (warum?)


    im Code hat sich ein kleiner Fehler eingeschlichen: if ($objArticle->numRows > 1) ausgebessert in: if ($objArticle->numRows > 0) (geändert am 10.5.2013)
    Geändert von pout (10.05.2013 um 16:52 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    19.03.2013.
    Beiträge
    4

    Frage

    Moin Moin,

    habe eine Frage zum selben Thema und zum DCA an sich.
    Leider konnte mir die Forensuche zu den Fragen keine Antworten ausspucken.
    Falls ihr Links haben solltet, die mir meine Fragen beantworten, dann gerne einfach nur diese posten.

    1.: Gibt es irgendeinen Ansatz, um in Contao 3.5 auch Child-Elemente unter Mode 6 zu filtern?
    2.: Vor dem Hintergrund von Contao 4: Gehe ich recht in der Annahme, dass das DCA nicht mehr Feature technisch angefasst wird?

  11. #11
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das DCA wurde in Contao 4 schon weiterentwickelt, aber nicht per-se sondern halt für Funktionen welche gewünscht wurden. Zum Beispiel ein Filter in der Dateiverwaltung. Auch in den Artikeln (mode 6) kann man Filtern, bin aber nicht sicher seit welcher Contao-Version.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  12. #12
    Contao-Nutzer
    Registriert seit
    19.03.2013.
    Beiträge
    4

    Standard

    Danke für den Hinweis!
    Dann schaue ich mir den Mode 6 mal in Contao 4 an. In Contao 3.5.x scheint die Filterbarkeit noch nicht implementiert zu sein.

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
  •