Katalog-Navigation wird nicht im FE eingebunden

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Tim G
    Contao-Urgestein
    • 13.02.2010
    • 2212

    #1

    Katalog-Navigation wird nicht im FE eingebunden

    Hi Leute,
    ich benötige zum ersten Mal die Katalog-Navigation.
    Ich habe ein entsprechendes SELECT - Feld für Kategorien und habe das entsprechende Modul (samt einer Überschrift) angelegt.
    Weder über Artikel->Modul, noch über ein Seitenlayout wird das Modul im FE gerendert.

    Der Artikel bleibt leer, das Seitenlayout ignoriert das Modul komplett.

    Jemand einen Tipp?

    Danke Tim
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo Tim G,
    kannst du mir nen Screenshot von deinen Moduleinstellungen geben?
    Und: hast du als Grundlage Taxonomien?

    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

    • Tim G
      Contao-Urgestein
      • 13.02.2010
      • 2212

      #3
      Ja, mit Tax.
      Angehängte Dateien
      http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

      Kommentar

      • MacKP
        Contao-Yoda
        • 15.06.2009
        • 13315

        #4
        Hmm sieht an sich super aus so.
        Kann jetzt nur noch an den Einstellungen beim Feldtyp liegen wie hast das eingestellt?. Oder du hast was anderes vergessen (öffentlich machen oder du arbeitest an der Falschen seite oder sonst was *g*).

        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

        • Tim G
          Contao-Urgestein
          • 13.02.2010
          • 2212

          #5
          Mhh... keine Ahnung.
          Ich werd ein normales Navigationmenu benutzen und im Template die Pfade neuschreiben lassen für den Catalog.
          Da sollte ein sehr spannendes Template bei rauskommen, was den Catalog per Seitenstruktur ohne Filtereinstellungen ansprechen kann.

          Danke Dir

          ps. wie gesagt. das modul wird einfach irgnoriert. wahrscheinlich liegts gar nicht an den Einstellungen. Nicht mal die Überschrift wird angezeigt.
          Kann es daran liegen, dass ich zwei Startpunkte einer Seite habe? Eigentlich nicht, oder?
          Zuletzt geändert von Tim G; 22.07.2011, 14:55.
          http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

          Kommentar

          • MacKP
            Contao-Yoda
            • 15.06.2009
            • 13315

            #6
            Hmm.. ich hab da vllt was für dich passendes. Ist ne Idee.
            Ich schicks dir mal per Mail ;-)

            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

            • Tim G
              Contao-Urgestein
              • 13.02.2010
              • 2212

              #7
              mod_navigation template zum Steuern von hierarchischen Katalogen

              Hi Leute,
              da bei mir irgendwie die Katalog-Navigation nicht ins FE wollte und ich eh flexibel sein wollte mit Hintergrundbilder und Unterseiten für meine Katalog-Kategorien, habe ich ein nav_default.tpl Template der normalen Navigation etwas umgebastelt, damit es ähnlich dem Katalog-Filter funktioniert.
              Mein erster Ansatz war sehr komplex, Datenbank-Abfragen etc., aber nach nem Kaffee ist mir aufgefallen, dass es viel einfacher geht.
              Hier mein Ansatz:

              (Meine Kategorien sind in taxonomy angelegt (ich bau das template später event. noch um, um direkt mit der tl_page zu arbeiten)).

              Folgende Taxonomy-Struktur:
              (kursiv sind die Feldnamen im Katalog. Alle vom Typ SELECT)

              [Produkte]
              [Produktgruppe 1 category]
              [Designlinie 1.1 design_line]
              [Designlinie 1.2 design_line]
              [Designlinie 1.3 design_line]
              [Produktgruppe 2 category]
              [Designlinie 2.1 design_line]
              [Designlinie 2.2 design_line]
              [Designlinie 2.3 design_line]
              [Produktgruppe 3 category]
              [Designlinie 3.1 design_line]
              [Designlinie 3.2 design_line]
              [Designlinie 3.3 design_line]
              usw.

              Die gleiche Struktur auch für die Seitenstruktur.

              (der alias der taxonomy Einträge muss im alias der Seite auftauchen:
              z.B.
              tax: Produkt_1
              Seite: /meine-seite/produkt_1


              Jetzt zum eigentlich Kern:
              1. Feldnamen der Kategorien als URL Schlüsselworte festlegen (muss man eh für den Katalog-Filter)
              2. Man nehme ein normales navi template, dieses wird für jedes Level aufgerufen und durchläuft die jeweiligen Seiten der Ebene.
              3. Man nehme den alias der aktuellen Seite aus dem Array und verlängt diesen um die den Feldnamen, der für die jeweilige Ebene steht. In meinem Beispiel: 1. category, 2. design_line
              4. Man baut sich einen neuen href - Pfad (das gleiche macht der Katalog-Filter - nur er wechselt die Seite nicht bzw. nicht mehr als eine Zielseite)

              Hier jetzt das Konstrukt:
              PHP-Code:
              <?php
              /**
               * Navigation template to use with catalog and tl_page pages 
               */
              
              // catalog filter fields in hierarchic order based on taxonomy, or tl_page structure
              $arrFields = array(
                  1 => 'category', 
                  2 => 'design_line'
              );
              $num_level = str_replace('level_' ,'',$this->level);
              
              ?>
              
              <ul class="<?php echo $this->level; ?>">
              <?php foreach ($this->items as $item): ?>
              
              <?php
              // build new href from item alias
              $alias = $item['alias'];
              $filter_suffix = $arrFields[$num_level] . '/' . str_replace(' ', '-', strtolower($item['title']));
              $item['href'] = $alias . '/' . $filter_suffix . '.html';
              ?>
              
              <?php if ($item['isActive']): ?>
              <li class="active<?php if ($item['class']): ?> <?php echo $item['class']; ?><?php endif; ?>"><span class="active<?php if ($item['class']): ?> <?php echo $item['class']; ?><?php endif; ?>"><?php echo $item['link']; ?></span><?php echo $item['subitems']; ?></li>
              <?php else: ?>
              
              <li<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?>><a href="<?php echo $item['href']; ?>" title="<?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?>"<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?><?php if ($item['accesskey'] != ''): ?> accesskey="<?php echo $item['accesskey']; ?>"<?php endif; ?><?php if ($item['tabindex']): ?> tabindex="<?php echo $item['tabindex']; ?>"<?php endif; ?><?php if ($item['nofollow']): ?> rel="nofollow"<?php endif; ?><?php echo $item['target']; ?>><?php echo $item['link']; ?></a><?php echo $item['subitems']; ?></li>
              
              <?php endif; ?>
              <?php endforeach; ?>
              </ul>

              Viele Grüße,
              Tim

              ps.
              Ich habs jetzt nur mit 2 Ebenentiefen probiert, sollte aber n-lang ausgebaut werden können.
              Ich werde das ganze noch bissel umbauen, dass man seine SELECT Felder mit der tl_page befeuern kann. Der Katalog-Filter baut dann aus "/" -> "-slash-" um Felder mit "/"s zu filter. Das ist bissel unschön, aber vielleicht kann man das mit anderen Erweiterungen um schreiben.
              Zuletzt geändert von Tim G; 24.07.2011, 20:04.
              http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

              Kommentar

              • Tim G
                Contao-Urgestein
                • 13.02.2010
                • 2212

                #8
                Zusätzlich dazu: catalog template mit dynamischer alias-Generierung

                Damit das obengezeigte Beispiel richtig flufflig brauchen wir noch eine Art dynamische link / alias Generierung für unsere Katalog-Liste und deren links, da wir bei Klick auf ein Item nicht zur Reader-Seite weitergeleitet werden wollen - sondern innerhalb unserer Seitenstruktur bleiben wollen.

                Wir platzieren also sowohl unsere Katalog-Liste als auch den dazugehörigen Reader in einem Seitenlayout.

                Das Template für die Liste sieht dann wie folgt aus:
                (VIELEN DANK an MacKP für den super Hinweis mit der Abfrage der URL-Schlüsselwörter )

                PHP-Code:
                <?php
                /**
                 * Catalog simple template with dynamic alias generation
                 */
                
                // check if we are already on a catalog readers site, if so: return;
                if($this->Input->get('items') || strlen($this->Input->get('items')) )
                    return;
                
                // Imports
                $this->import('Database'); 
                
                $alias_field = 'alias'; // catalog alias field
                $request = strtolower($this->replaceInsertTags('{{env::request}}'));
                $page_alias = str_replace('.html', '', $request);
                
                ?>
                
                
                
                <?php if (count($this->entries)): ?>
                
                <div class="layout_simple">
                
                <?php foreach ($this->entries as $entry): ?>
                <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
                
                <?php
                // get alias of current catalog field
                $objFields = $this->Database->prepare("SELECT " . $alias_field . " FROM " . $entry['tablename'] . " WHERE id=?")
                                ->limit(1)
                                ->execute($entry['id']);
                if(!$objFields->numRows) return ;
                $alias = $objFields->$alias_field;
                
                $regex = '((href=)[^ ]+)';
                $url = $page_alias . '/items/' . $alias; // rebuild url in catalog reader form
                $entry['link'] = preg_replace($regex, 'href="' . $url . '.html' ,$entry['link']);
                foreach ($entry['data'] as $field=>$data)
                {
                    $entry['data'][$field]['value'] = preg_replace($regex, 'href="' . $url . '.html"' , $entry['data'][$field]['value']);
                }
                
                ?>
                
                
                <?php foreach ($entry['data'] as $field=>$data): ?>
                <?php if (!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; ?>
                
                <?php if ($entry['showLink'] && $entry['link']): ?>
                <div class="link"><?php echo $entry['link']; ?></div>
                <?php endif; ?>
                <?php if ($entry['linkEdit']): ?>
                <div class="linkEdit"><?php echo $entry['linkEdit']; ?></div>
                <?php endif; ?>
                </div>
                
                <?php endforeach; ?>
                </div>
                 
                <?php else: ?>
                
                <?php if ($this->condition): ?>
                <div class="condition"><?php echo $this->condition; ?></div>
                <?php else: ?>
                <p class="info">There are no entries matching your search.</p>
                <?php endif; ?>
                
                <?php endif; ?>

                Es wird für jedes item ein neuer href geschrieben an Hand des verwendeten alias Feldes und der aktuellen URL.
                Dieser wird ergänzt mit dem Katalog-Leser Schalter "items". Sobald die URL "items" + "/" + "alias" geladen wird, wird der Katalog-Reader aktiv.
                Dann greift MacKPs Abfrage und ignoriert das Katalog-List Template, weil wir uns auf einer Reader-Seite befinden.
                Die Variable $alias_field ist der Schalter. Mein alias-Feld heisst "alias".

                Viele Spass damit,
                Tim
                http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

                Kommentar

                • dhe
                  Contao-Fan
                  • 25.10.2010
                  • 663

                  #9
                  Hm,
                  bei mir wird nur die erste Ebene ausgegeben... die Unterkategorien werden nicht angezeigt.
                  PHP-Code:
                  $item['subitems']; 
                  
                  ist bei mir leer.

                  Taxonimie sieht bei mir so aus:
                  Code:
                  Produkte (produkte)
                      Produktkategorie 1 (category)
                          Produktgruppe 1 (product_group)
                          Produktgruppe 2 (product_group)
                          Produktgruppe 3 (product_group)
                          Produktgruppe 4 (product_group)
                          Produktgruppe 5 (product_group)
                      Produktkategorie 2 (category)
                          Produktgruppe 6 (product_group)
                          Produktgruppe 7 (product_group)
                          Produktgruppe 8 (product_group)
                          Produktgruppe 9 (product_group)
                          Produktgruppe 10 (product_group)
                      Produktkategorie 3 (category)
                          Produktgruppe 11 (product_group)
                          Produktgruppe 12 (product_group)
                          Produktgruppe 13 (product_group)
                          Produktgruppe 14 (product_group)
                          Produktgruppe 15 (product_group)
                      Produktkategorie 4 (category)
                          Produktgruppe 16 (product_group)
                          Produktgruppe 17 (product_group)
                  Ich hab das doch richtig verstanden: Dein Skript baut analog dem Navigationsmodul eine Katalognavigation auf Basis der Taxonomie Struktur auf oder? So dass ein eingebundenes Katalog Lister Modul direkt die Einträge einer (in meinem Fall) Produktgruppe ausgibt oder?

                  Gruß
                  dhe

                  Kommentar

                  Lädt...