Catalog List ODER Catalog Navigation

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • valentin
    Contao-Nutzer
    • 13.07.2009
    • 135

    #1

    Catalog List ODER Catalog Navigation

    Liebe Contao-Community,

    schon seit längerem beschäftigt mich beim Katalog ein Problem und ich verstehe nicht, dass es dafür nicht schon längst eine Lösung gibt.
    In 95% der Fälle verwende ich den Catalog zum Anlegen von Portfolios für Künstler, Architekten, Galerien etc.
    Meistens sind die Anforderungen ähnlich: Bestimmte Items (Projekte, Künstler, Werke, Bauten...) sollen über die im Katalog vordefinierten Felder eingegeben und dann in Form eine Navigation oder über Filter wieder ausgegeben werden.

    In manchen Fällen ist die Katalog Liste ausreichend. Hier zBsp. eine klassische Anwendung, bei der man aus einer Liste zu einem einzelnen Katalog-Reader kommt. http://thelustgallery.com/exhibitions.html

    Hier funktioniert die Sache mit den Filtern gut: http://werkraumwien.at/index.php/fun..._select/5.html
    Am Ende kommt man auch hier auf eine Seite mit einem Reader.

    Was ich aber gerne hätte, wäre ein "Menü" mit einer Liste aller Items, auf der selben Seite wie der Reader (siehe Grafik).



    Meine (halben) Lösungen bisher:

    1.) Mit einer Katalog-Liste
    Das funktioniert zwar, aber der ausgewählte (aktive) Menüpunkt lässt sich nicht über CSS ansprechen, da er sich nicht von den anderen Elementen der Liste unterscheidet.
    Lösungsansatz: Gibt es eine Möglichkeit, dass das Element einer Liste irgendwie getagt ist, wenn sich auf der selben Seite ein Reader mit dem selben Inhalt befindet?

    2.) Mit dem Katalog-Filter
    Hier kann ich den Filter über .active zwar editieren aber die URL ist nicht sehr schön. In meinem Fall: https://www.domain.com/title/Galerie...le%20Senn.html
    Ausserdem kann ich die Filter-Liste nicht sortieren, was auch ein Problem darstellt.
    Lösungsansatz: Kann man die URL die über den Filter erzeugt wird beeinflussen? Schön wäre sowas wie: www.domain.com/title/Galerie-Gabriele-Senn.html
    Ist es möglich die Filter zu sortieren, ähnlich dem "Anordnen nach" Feld im Modul Katalog-Liste?

    3.) Katalog-Navigation
    Eigentlich ja die naheliegende Lösung, auch wenn die Katalog-Navigation für meinen Fall etwas zu aufwändig ist (am schönsten wäre ja eine Katalog-Liste mit .active Element). Das Problem bei der Katalognavigation ist aber, dass mir nicht klar ist, wie ich die Elemente sortiere. Es wäre schön, wenn es da wie bei der Katalog-Liste ein "Anordnen nach" Feld gebe.
    Dazu habe ich hier schon mal was gepostet und auch ein Ticket angelegt, bin mir aber nicht sicher ob ich mit einer Antwort/Lösung rechnen kann.

    4.) Katalog mit Seitenstruktur
    Das wäre meine Notlösung - und leider ziemlich unsauber. Ich lege eine Seitenstruktur an mit lauter externen Weiterleitungen auf die entsprechenden URLs der Reader-Seite. Leider aber nicht besonders Enduser-freundlich wie ihr euch denken könnt.

    Deswegen meine Frage: wie verwendet ihr denn den Katalog? Ist wirklich noch niemand auf dieses Problem gestoßen? Ich arbeite gerade parallel an zwei Projekten und bei beiden stehen ich im Grunde wegen dieser Sache an.
    Gibt es vielleicht eine total einfach Lösung die ich übersehen habe?
    Vielen Dank falls ihr mir hier weiterhelfen könnt!
    LG,
    Valentin
  • webster
    Contao-Fan
    • 15.09.2010
    • 460

    #2
    Hallo valentin,

    um einem Listenitem den "active"-Status zu verpassen, musst Du ein wenig das Listentemplate anpassen. Ich habe hier einfach mal dem umgebendem <div> die Klasse active hinzugefügt:

    PHP-Code:
    <?php foreach ($this->entries as $entry): ?>
      // aktives Item bekommt eine CSS-Klasse zugewiesen.
      $cssClass = $this->Environment->request == $entry['url'] ? ' active' : '';
      <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?><?php echo $cssClass ?>">
      // [...]
    Ich vergleiche einfach die aufgerufene URL ($this->Environment->request mit der URL des aktuellen Eintrags der Liste. Sind beide gleich, so ist das Item aktiv.
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

    Kommentar

    • valentin
      Contao-Nutzer
      • 13.07.2009
      • 135

      #3
      Hallo Webster,

      danke für die schnelle Antwort.
      Diese Lösung wäre wirklich ideal!

      Leider bringe ich das nicht zum laufen.

      Ich hab das Original-Template "catalog_full" von

      PHP-Code:
      <?php if (count($this->entries)): ?>
      <div class="layout_full">
      <?php foreach ($this->entries as $entry): ?><div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>"><?php if($entry['linkEdit']): ?><?php echo $entry['linkEdit']; ?><?php endif; ?><?php foreach ($entry['data'] as $field=>$data): ?><?php if (strlen($data['raw']) && !in_array($field, array('catalog_name','parentJumpTo'))): ?><div class="field <?php echo $field; ?>">    <div class="label"><?php echo $data['label']; ?></div>    <div class="value"><?php echo $data['value']; ?></div></div><?php endif; ?><?php endforeach; ?></div><?php endforeach; ?></div>
      <?php else: ?><p class="info"><?php echo $this->noItemsMsg; ?></p><?php endif; ?>
      auf

      PHP-Code:
      <?php if (count($this->entries)): ?>
      <div class="layout_full">
      <?php foreach ($this->entries as $entry): ?>$cssClass = $this->Environment->request == $entry['url'] ? ' active' : '';  <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?><?php echo $cssClass ?>"><?php if($entry['linkEdit']): ?><?php echo $entry['linkEdit']; ?><?php endif; ?><?php foreach ($entry['data'] as $field=>$data): ?><?php if (strlen($data['raw']) && !in_array($field, array('catalog_name','parentJumpTo'))): ?><div class="field <?php echo $field; ?>">    <div class="label"><?php echo $data['label']; ?></div>    <div class="value"><?php echo $data['value']; ?></div></div><?php endif; ?><?php endforeach; ?></div><?php endforeach; ?></div>
      <?php else: ?><p class="info"><?php echo $this->noItemsMsg; ?></p><?php endif; ?>
      geändert.

      In der Ausgabe im Frontend tauch jetzt immer die Zeile
      PHP-Code:
      $cssClass = $this->Environment->request == $entry['url'] ? ' active' : '';
      Galerie 
      
      vor jedem Listenelement auf.

      Wahrscheinlich fehlt hier nur eine Variable aber ich kenn mich mit PHP nicht gut genug aus.

      Hast du das schon mal verwendet? Hat es bei dir funktioniert?
      Vielen Dank nochmals - ich würde mich wirklich freuen, wenn ich da auf eine Lösung kommen würde...

      LG,
      V

      PS.: Ich verwende auch das Modul i18nl10n für die Mehrsprachigkeit, aber daran wird's wohl nicht liegen?!

      Kommentar

      • webster
        Contao-Fan
        • 15.09.2010
        • 460

        #4
        Ups, sorry, da ist mir wohl ein öffnendes und schließendes PHP-Tag abhanden gekommen. So sollte es eigentlich lauten:

        PHP-Code:
        <?php foreach ($this->entries as $entry): ?>
          // aktives Item bekommt eine CSS-Klasse zugewiesen. HIER FEHLTE DAS <?php und ?>
          <?php $cssClass = $this->Environment->request == $entry['url'] ? ' active' : ''; ?>
          <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?><?php echo $cssClass ?>">
          // [...]
        Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

        Kommentar

        • MacKP
          Contao-Yoda
          • 15.06.2009
          • 13315

          #5
          Kleine Anmerkung zur Seitenstruktur:

          Man kann entweder die Items direkt mit Seiten verknüpfen und dann mit einer Liste darstellen (auch wenn es nur ein Item ist).
          Oder man macht das direkt mit catalogcontentelment als Erweiterung.

          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

          • valentin
            Contao-Nutzer
            • 13.07.2009
            • 135

            #6
            Webster!!!

            Ich danke dir vielmals! Es hat auf Anhieb funktioniert!
            Auch der Tipp mit dem catalogcontentelement als Erweiterung ist gut! Danke, MacKP!

            Hier jetzt die fertige Version mit Anleitung, für alle, die sich noch weniger auskennen als ich!

            ----------------------

            Um die "Katalog Liste" als "Menü" auf der selben Seite mit einem "Katalog Leser" zu verwenden und dabei ein aktives (geklicktes) Listenelement zu erhalten, mach das:

            Erstelle im Backend unter Templates eine Kopie von "catalog_full.html5"
            Benenne das Template um in "catalog_full_active.html5"

            Editiere das Template, so das es am Ende so aussieht:

            PHP-Code:
            <?php if (count($this->entries)): ?>
            <div class="layout_full">
            <?php foreach ($this->entries as $entry): ?><?php $cssClass = $this->Environment->request == $entry['url'] ? ' active' : ''; ?><div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?><?php echo $cssClass ?>"><?php if($entry['linkEdit']): ?><?php echo $entry['linkEdit']; ?><?php endif; ?><?php foreach ($entry['data'] as $field=>$data): ?><?php if (strlen($data['raw']) && !in_array($field, array('catalog_name','parentJumpTo'))): ?><div class="field <?php echo $field; ?>">    <div class="label"><?php echo $data['label']; ?></div>    <div class="value"><?php echo $data['value']; ?></div></div><?php endif; ?><?php endforeach; ?></div><?php endforeach; ?></div>
            <?php else: ?><p class="info"><?php echo $this->noItemsMsg; ?></p><?php endif; ?>
            Wähle in deinem Modul "Katalog Liste" als Template nun "catalog_full_active" aus.


            Über CSS kannst du nun das aktive Element in der List so ansprechen:

            Code:
            div.layout_full div.item.active a {
            color: #78f861;
            }
            Ich hoffe, dieser Thread ist auch anderen eine Hilfe! Nochmals Danke an MacKP und Webster!

            Kommentar

            • thepixture
              Contao-Fan
              • 24.06.2009
              • 536

              #7
              Ich steh gerade vor dem gleichen Problem und hab es mit deinem angepassten Template probiert. Bei mir wird aber die Klasse 'active' nicht ausgegeben.

              Ich dacht es liegt vielleicht daran, dass ich Leerzeichen in der Url habe und im Request die Leerzeichen in %20 umgewandelt werden. Deswegen hab ich es auch mit urlencode() probiert.
              PHP-Code:
              $cssClass = $this->Environment->request == urlencode($entry['url']) ? ' active' : ''; 
              
              Woran kann es denn noch liegen? Template wird auf jeden Fall das richtige verwendet.
              Grüße
              thepixture

              Kommentar

              • thepixture
                Contao-Fan
                • 24.06.2009
                • 536

                #8
                Keiner eine Idee, woran es liegen könnte, oder funktioniert das mit der aktuellen Version nicht mehr?
                Grüße
                thepixture

                Kommentar

                • Tim G
                  Contao-Urgestein
                  • 13.02.2010
                  • 2212

                  #9
                  Ich würde eher über den Alias prüfen und über die Input Klasse.
                  Probier mal standardize für beide URLs zum vergleichen.


                  Sent from my iphone using Tapatalk
                  http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

                  Kommentar

                  • thepixture
                    Contao-Fan
                    • 24.06.2009
                    • 536

                    #10
                    Bin leider nicht so firm in solchen Sachen, könntest Du das bitte etwas genauer erläutern
                    Danke
                    Grüße
                    thepixture

                    Kommentar

                    • thepixture
                      Contao-Fan
                      • 24.06.2009
                      • 536

                      #11
                      Ok es funktioniert doch
                      Ich hatte den Alias nicht mit einen Alias-Catalogfeld generieren lassen, sondern nur in den Catalog-Einstellungen das Alias-Feld ausgewählt.
                      Grüße
                      thepixture

                      Kommentar

                      • Cranker
                        Contao-Fan
                        • 16.11.2009
                        • 288

                        #12
                        Hallo,

                        der Eintrag ist zwar schon etwas älter, zeigt aber genau das Problem das ich auch habe:

                        Zitat von valentin Beitrag anzeigen
                        Hier funktioniert die Sache mit den Filtern gut: http://werkraumwien.at/index.php/fun..._select/5.html
                        So sieht das bei mir auch aus.
                        Allerdings stört mich, das ich bei Auswahl eines Items und anschließender Wahl einer anderen Rubrik eine verschachtelte URL bekomme:

                        Ich wähle z.B. die erste Rubrik:


                        Danach den zweiten Eintrag "Tagungszentrum Schloss Schönbrunn":


                        Wenn ich nun eine ander Rubrik (z.B. die zweite Rubrik "Brücken") auswähle, steht folgendes in der URL:


                        Erwarten würde ich aber diese URL:


                        Die funktioniert ja auch, aber nur wenn ich als erstes diese Rubrik wähle und mir vorher keine Referenz angesehen habe. Außerdem ist es doch so auch ein "Duplicate Content" Problem - Oder?

                        Kann man das irgendwie mit dem Filter anpassen?

                        Der Filter listet ja nur Rubriken auf, die auch Inhalt haben, das ist für mein Projekt genau richtig.
                        Außerdem ist eine Mehrfachauswahl möglich, das geht bei einem Auswahlfeld (welches für die Catalog Navigation nötig ist) nicht...

                        So wie ich das sehe, befinde ich mich nach der Auswahl einer Referenz ja auf der entsprechenden Unterseite und von da aus wird die Navigation aus dem Filter dann neu verlinkt. Wunschlösung wäre hier, das die Navigation immer von der "Root-Ebene" verlinkt.

                        Herzlichen Dank für Tipps
                        Thorsten
                        Zuletzt geändert von Cranker; 20.02.2013, 10:24.
                        V15* Thorsten Neuhaus
                        Taufkirchen (München)

                        Kommentar

                        • MacKP
                          Contao-Yoda
                          • 15.06.2009
                          • 13315

                          #13
                          Ah, mit den Links versteh ich dein Problem. Hmm für den Catalog ist die aktuelle Seite ja die aktuelle... also für deinen Filter und der versucht da nur Parameter drann zu hängen.
                          Hast du eventuell noch nicht die Weiterleitungsseite beim Filter eingestellt? Die sollte ja auf deine 'root' Seite von der Liste gehen und damit sollte das Theoretisch besser klappen...

                          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

                          • Cranker
                            Contao-Fan
                            • 16.11.2009
                            • 288

                            #14
                            Hallo,

                            Zitat von MacKP Beitrag anzeigen
                            Hast du eventuell noch nicht die Weiterleitungsseite beim Filter eingestellt? Die sollte ja auf deine 'root' Seite von der Liste gehen und damit sollte das Theoretisch besser klappen...
                            Da kann ich ja nur "Sprung zur Seite" im Modul selbst und im jeweiligen Katalog einrichten. Das habe ich auch gemacht:

                            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: filter.png
Ansichten: 1
Größe: 88,6 KB
ID: 922630
                            V15* Thorsten Neuhaus
                            Taufkirchen (München)

                            Kommentar

                            • MacKP
                              Contao-Yoda
                              • 15.06.2009
                              • 13315

                              #15
                              Ah, ja so heißt das in deutsch ... sorry, bin irgendwie den deutschen catalog nicht so gewohnt, da die Dateien nicht im SVN liegen *g*

                              Hmm, ich glaub das Problem kommt dann daher, das du die Liste und die Detailseite auf einer Seite hast. Eventuell wäre das nicht, wenn es sich um eine Unterseite handeln würde bei der Detailseite?
                              Vllt mal ausprobieren...

                              Betreff: DC -> den Produziert der Catalog ja eh massenweise, was ja klar ist bei so einer Struktur.. jedes Item kommt in einer gefilterten Liste ziemlich häufig vor... aber das nur am Rande

                              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...