Katalog Select-Field nach Taxonomy - Stopebene?

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • pju
    Contao-Nutzer
    • 06.10.2012
    • 213

    #1

    Katalog Select-Field nach Taxonomy - Stopebene?

    Hallo,

    erstmal vielen Dank für das tolle Forum.

    Ich bin gerade dabei, eine Portfolio-Seite mit eigentlich recht einfacher Struktur zu bauen. Jeder Eintrag (Bild, Video oder Text) kriegt eine Kategorie nach folgendem Muster zugeteilt:

    Code:
    Arbeiten
    |-Arbeit 1 (Eintrag 1,2,3)
    |-Arbeit 2 (Eintrag 4,5)
    |-Arbeit 3 (Eintrag 6,7,8,9)
    Zu jeder Arbeit gibt es aber noch Zusatz-Infos (z.B. Art der Arbeit, Entstehungsjahr). Diese Infos sind dann immer für mehrere Einträge gleich. Deshalb würde ich sie gerne unabhängig von den einzelnen Einträgen mit den Arbeiten verknüpfen.

    Erst wollte ich daher mit zwei Katalogen arbeiten (Einträge, Arbeiten). Allerdings funktioniert die Katalog-Navigation nicht basierend auf Einträgen aus Katalogen, sondern nur aus der Taxonomie. (Siehe hier).
    Ich dachte, ich umgeh das, indem ich mit der Taxonomy arbeite. Das sähe so aus:

    Code:
    Arbeiten
    |-Arbeit 1 (Eintrag 1,2,3)
        |-Video, 2012
    |-Arbeit 2 (Eintrag 4,5)
        |-Fotografie, 2010
    Dann funktioniert die Navigation wunderbar und ich könnte doch im Template über eine DBQuery die jeweilige Info rausfinden (also wenn ich Arbeit 1 sehe die "Unterkategorie" Video, 2012.
    Allerdings krieg ich es nicht hin, dass er dann im Backend bei den Feldern für die Einträge die richtigen Punkte anzeigt. Ich habe also ein Feld vom Typ Auswahl mit individualisierter Optionsauswahl. Ich wähle "Arbeiten" als Stamm-Eintrag. Aber egal, was ich bei Start-und Stopebene anzeigt, ich bekomme immer alle Punkte zur Auswahl. Also statt nur Arbeit 1, Arbeit 2 etc zeigt er mir auch Video, 2012 und Fotografie, 2010 an.

    Überseh ich da nur was oder funktioniert das so nicht? Eventuell wäre es vielleicht doch einfacher, wie in dem oben verlinkten Beitrag vorgeschlagen mit einer individuellen Navigation zu arbeiten. Wie müssten dann die URIs aussehen?


    Und noch eine davon unabhängige Frage:
    In Contao gibt es ja im Backend Felder, deren Anzeige auf einer Auswahlliste basiert. Z.B. bekomme ich beim Anlegen eines Moduls unterschiedliche Felder je nach Auswahl des Modultypes. Seh ich das richtig, dass das es beim catalog nicht möglich ist, Felder abhängig von einer Auswahl zu zeigen, sondern nur nach Checkboxen? Könnte man sowas implementieren? Ich erinnere mich daran, einen Beitrag dazu gelesen zu haben, finde den aber nichtmehr.

    Vielen Dank im Voraus,
    Philip
    Zuletzt geändert von pju; 12.10.2012, 14:46.
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo pju,
    das mit dem Start- und Stoplevel ist ein Bug so wie das klingt. Gab es schon mal.. bzw. weiß gar nicht ob der inzwischen behoben wurde.
    Wenn noch nicht geschehen, bitte mit der SVN Version testen und ggf. nen Ticket anlegen (wenns noch keins gibt).

    Das mit dem Einblenden geht aktuell wirklich nur für Checkboxen.
    Wenns dazu noch kein Ticket gibt, dann kannst ja mal eins anlegen.

    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

    • pju
      Contao-Nutzer
      • 06.10.2012
      • 213

      #3
      Hallo MacKP,

      danke für die Hilfe. Die Probleme existiert auch mit aktueller Version aus dem SVN noch. Tickets gibt's für beides schon. Das Ticketsystem ist bei mir leider so lahm, sonst hätte ich schon früher nachgeschaut.

      Allerdings funktioniert das ganze, wenn man mit "Baum mit allen auswählbaren Einträgen" arbeitet. Siehe hier. Ich musste allerdings eine zusätzliche Überebene in der Taxonomy erstellen, weil Start-/Stoplevel 0/0 ja nichts macht. Ich brauchte also 1/1. Trotzdem, wäre schön, wenn das auch mit den anderen Modi funktioniert, besonders die ausgeklappten Varianten ermöglichen doch ein deutlich schnelleres Arbeiten.

      Wen's interessiert, die Tickets:

      Zum Stoplevel
      Zu den Checkboxen

      Kommentar

      • pju
        Contao-Nutzer
        • 06.10.2012
        • 213

        #4
        Ich hab mal noch ein Ticket zum grundsäzlichen Problem mit der Navigation nach anderen Katalogen erstellt. Dazu hatte ich noch nichts gefunden. Wäre aber doch sehr praktisch, dass ohne Workaround realisieren zu können.

        Ticket hier.

        Beste Grüße,
        Philip

        Kommentar

        • pju
          Contao-Nutzer
          • 06.10.2012
          • 213

          #5
          Hallo schon wieder,
          nach etwas rumprobieren hab ich das Catalog Navigation Modul wie gewünscht zum Laufen bekommen. Also auf das Problem hier bezogen. Allerdings weiß ich nicht, wie sauber meine Lösung ist.

          /edit: Okay, ich hab glaube ich rausbekommen, was genau das schieflief. Unten deshalb eine allgemeingültigere Lösung.
          Worauf ich baue: Die Taxonomy hat eine komplexe Struktur mit Unterpunkten. Meine eigener Katalog nicht. Ich steh grad auf dem Schlauch - kann man überhaupt Kataloge erstellen, die so wie die Taxonomy verschachtelt sind? Mit Überprüfung, ob die Navigation aus der Taxonomy kommt, hat's bei mir jedenfalls für's erste geklappt.

          Folgende Änderungen in ModuleCatalog.php aus der aktuellen SVN-Version hat's gebraucht:

          PHP-Code:
          Zeile 3942
          if (count($objNodes->childCount) && $this->objNavField->blnChildren [COLOR="#FF0000"]&& $this->objNavField->sourceTable == 'tl_taxonomy'[/COLOR]) 
          
          PHP-Code:
          Zeile 3977
          if(!$this->objNavField->treeView || ($objNodes->itemCount || $objNodes->childCount) [COLOR="#FF0000"]|| $this->objNavField->sourceTable != 'tl_taxonomy'[/COLOR]) 
          
          PHP-Code:
          Zeile 4119
          if ($this->objNavField->treeView && $root [COLOR="#FF0000"]&& $this->objNavField->sourceTable == 'tl_taxonomy'[/COLOR]) 
          


          Okay, jetzt ohne den hässlichen Workaround. Die Variante von oben ist hinfällig. Sollte jetzt eigentlich richtig laufen.
          Problem Nummer eins war, dass die Abfrage, ob es sich um eine verschachtelte Struktur handelt, nicht richtig funktioniert hat:

          Alter Code funktioniert nicht, weil auch Kataloge, die nicht verschachtelt sind, eine pid haben:
          PHP-Code:
          Zeile 4077
          $this->objNavField->treeView = $this->Database->fieldExists('pid', $this->objNavField->sourceTable); 
          
          Meine Lösung (keine Ahnung, wie schön das ist, aber es funktioniert:
          /EDIT: Okay, ich hab nochmal gepennt. Sollte so aussehen:

          PHP-Code:
          $distinct_pids = $this->Database->prepare('SELECT DISTINCT pid FROM '.$this->objNavField->sourceTable)
                                  ->limit(2)
                                  ->execute();
          $this->objNavField->treeView = count($distinct_pids->fetchEach('pid')) > 1; 
          
          Zweites Problem, ich glaube, hier ist ein überflüssiges Count vorhanden:
          PHP-Code:
          Zeile 3942
          if (count($objNodes->childCount) && $this->objNavField->blnChildren) 
          
          So läuft's:
          PHP-Code:
          if ($objNodes->childCount && $this->objNavField->blnChildren) 
          
          Ich hab eine entsprechend gepatchte Version anghängt (beruht auf Revision 388 aus dem SVN).

          Vielleicht kann sich das einer von den Profis ja mal anschauen, ob etwas in die Richtung legitim ist. Ich hab jetzt nicht weiter getestet, kann ich aber gerne machen, wenn die Rangehensweise so halbwegs passt.

          Grüße,
          Philip
          Angehängte Dateien
          Zuletzt geändert von pju; 15.10.2012, 14:01.

          Kommentar

          Lädt...