Zum Inhalt springen

Vollständiges Kategorie-Menü

Erstellt am 29. Juli 2011 · 4 Antworten · letzte Antwort am 1. August 2011

Tags: Kategorien, Frage

ra.​s ·

Hallo zusammen,

ich verwende commerce das erste Mal in einem Projekt und habe mir nach den bekannten Anleitungen ein Kategorie-Menu im TS erstellt - funktioniert auch einwandfrei. Nur leider bekomme ich es nicht dazu in der 2. Ebene die Unterkategorien auszugeben. Ich bekomme immer nur eine Menu-Ebene ausgegeben.

Ist es überhaupt möglich ein Kategorie-Menü zu erstellen, welches alle Unterkategorien ausgibt - quasi einer Sitemap gleich?

Grüße,
Ralf

ra.​s ·

Hi Patrick,

viele Dank für das Script. Habe es für Commerce angepasst und alles läuft wunderbar. +g+
Lediglich die Anzeige der Anzahl zugeordneten Produkte habe ich rausgenommen. Da diese nicht die Anzahl aller untergeordneten Produkte anzeigen kann, ist sie für mich nicht wirklich nützlich.

Nochmal Danke,
Ralf

Hier die Commerce-Version eines CATMENUS, basierend auf Patricks Script aus dem vorangegangenem Post:

lib.catList = COA
lib.catList {
  # hole alle Hauptkategorien
  10 = CONTENT
  10 {
    # wrappe die gesamte Liste als "unsortierte Liste"
    wrap = <ul>|</ul>
    table = tx_commerce_categories
    select {
      # hier muss die PID eures 'Products'-Ordners (unter dem werden im Regelfall die Kategorien angelegt) rein
      # oder die PID des Ordners in dem ihr die Kategorien angelegt habt
      pidInList = 5
      orderBy = sorting
      # Da es in commerce noch andere (System) Kategorie-Typen gibt, solltet ihr eure Kategorien einer "Master"-Kategorie unterstellen.
      # Die UID dieser Kategorie dann hier als Wert von 'parent_category' eintragen
      where = parent_category = 48 AND deleted = 0 AND hidden = 0
    }
    renderObj = COA
    renderObj {
      # wrappe jede gefundene Hauptkategorie als Listenelement
      wrap = <li>|</li>
      # ueberschreibe den vorherigen Wrap ...
      wrap.override = <li class="current">|</li>
      # ... nur, wenn ...
      wrap.override.if {
        # ... eine News-Kategorie bereits ausgewaehlt wurde und per GET/POST ermittelt werden kann
        value.data = GPvar:tx_commerce_pi1|catUid
        # und dieser ermittelte Wert der aktuellen uid gleicht
        equals.field = uid       
      }
      # zeig mir den Kategorie-Titel und mache einen Link daraus zur Kategorie-Detail-Uebersicht
      10 = TEXT
      10 {
        # das title-Feld soll als Text angezeigt werden (koennte man auch description... verwenden)
        field = title
        typolink {
          # verlinke zu der Seite mit der Produkt-Auflistung (Listenansicht)
          parameter = 13
          title.field = title
          # fuege den GET-Parameter fuer die ausgewaehlte Kategorie hinzu
          additionalParams.dataWrap = &tx_commerce_pi1[catUid]={field:uid}
        }
      }
      # zeige mir alle Unterkategorien der aktuellen Kategorie an
      20 = CONTENT
      20 {
        stdWrap {
          # fuehre den Abschnitt nur aus, wenn in der Select-Abfrage ein Wert gefunden wurde
          required = 1
          wrap = <ul>|</ul>
        }
        table = tx_commerce_categories
        select {
          # Hier wieder die PID eures Kategorien-Ordners
          pidInList = 5
          orderBy = sorting
          andWhere.dataWrap = parent_category = {field:uid} AND deleted = 0 AND hidden = 0
        }
        # vererbe die Einstellungen von lib.catList.10.renderObj an dieses renderObj
        renderObj < lib.catList.10.renderObj
        renderObj = COA
        renderObj {
          # zeige den Titel mit Verlinkung an, genauso wie bei lib.catList.10.renderObj.10 (vererbt)
          10 < lib.catList.10.renderObj.10
          # zeige die Unterkategorien an, genauso wie bei lib.catList.10.renderObj.20 (vererbt)
          20 < lib.catList.10.renderObj.20
          # wenn noch eine 3. und 4. Kategorien-Ebene abgebildet werden sollen,
          # dann die folgenden 5 Zeilen verwenden
          # 20.renderObj = COA
          # 20.renderObj {
          #   10 < lib.catList.10.renderObj.10
          #   20 < lib.catList.10.renderObj.20
          # }
        }
      }
    }
  }
}
fiedomedia ·

Hallo,

freut mich wenn ich helfen konnte.

Jetzt noch ein Like oder Plus1 auf meiner Website, dann hab ich auch was davon ;-)

Grüße Patrick