---
title: "System Categories"
url: "https://www.typo3.net/d/119161-system-categories"
source: "typo3.net"
tags: ["TYPO3","TypoScript","Frage","Kategorien","TYPO3 6.x"]
created: "2014-11-12"
last_reply: "2014-11-14"
replies: 6
solved: false
page: 1
pages: 1
lang: "de"
---

# System Categories

TYPO3 › TypoScript · 6 Antworten · gestartet 2014-11-12

## Eröffnungsbeitrag

**opaque** · 2014-11-12 · [Beitrag #1](https://www.typo3.net/d/119161-system-categories/1)

Hallo Forum

wie kann ich alle System Kategorien auswählen? Ich möchte ein Menü erstellen welches mir alle Kategorien anzeigt ohne sie explizit im TS angeben zu müssen. Oder gibt es eine Möglichkeit alle Kategorien aus einem Sysfolder zu holen?

Diese Varianten funktionieren nicht:

```typoscript
special.value = all
special.value = *
#special.value = 1,2,3
```

```typoscript
temp.pages = HMENU
temp.pages {
  special = categories
  special.value = 1,2,3
  wrap = <div class="white"><div class="innerwrap"><h2>Produkte</h2><ul>|</ul></h1></div></div>
  1 = TMENU
  1.NO {
      allWrap = <li>|</li>
  }
}
```

lg opaque

## Antworten

### [#2](https://www.typo3.net/d/119161-system-categories/2) · toifel · 2014-11-13

HMENU berücksichtigt nur Seiten - steht auch explizit so in den docs:
special = categories: "Makes a menu of pages belonging to one or more categories."

Du kannst aber mit einem CONTENT Objekt auf table = sys_categories alle auslesen und dir im renderObj selbst das Menü zusammen schieben.

### [#3](https://www.typo3.net/d/119161-system-categories/3) · opaque · 2014-11-13

Ok so geht es Kategorien aus einem Sysfolder zu holen und darzustellen:

```typoscript
temp.cat = CONTENT
temp.cat {
  wrap = <h2>KAtegorien</h2><ul id="categories">|</ul>
  table = pages
  select {
    uidInList.field = uid
    pidInList = 24
    selectFields = *
    join = sys_category_record_mm ON pages.uid = sys_category_record_mm.uid_foreign JOIN sys_category ON sys_category.uid = sys_category_record_mm.uid_local
    where = sys_category_record_mm.tablenames = 'pages'
    andWhere.dataWrap = sys_category.sys_language_uid = {GP:L}
    groupBy = sys_category.title
    #orderBy = sys_category.sorting
    orderBy = sys_category.title
  }
  renderObj = COA
  renderObj.10 = TEXT
  renderObj.10 {
    field = uid
    wrap = <li id="cat|">
  }
  renderObj.20 = TEXT
  renderObj.20 {
    field = title
    stdWrap.typolink.parameter.field = uid
    stdWrap.typolink.additionalParams.dataWrap = |&type=104
    wrap = |</li>
  }
}
```

Was ich jetzt noch brauche ist eine Abfrage aller Seiten aus eienem Sysfolder inkl. aller zugeordneten Kategorien:

Die Ausgabe sollte in etwa so aussehen:
<li class="cat1 cat2 cat5 cat10">PageTitle</li>

So komme ich an die Seiten aber es fehlt noch der JOIN zu den Kategorien und vor allem wie füge ich mehrere Kategorien in die Klasse ein. Ich brauche das um später via jQuery bei MouseOver Produkte hervorzuheben.

```typoscript
temp.pro = CONTENT
temp.pro {
  wrap = <h2>Produkte</h2><ul id="categories">|</ul>
  table = pages
  select {
    uidInList.field = uid

    pidInList = 24
    selectFields = *
  }
  renderObj = COA
  renderObj.10 = TEXT
  renderObj.10 {
    field = uid
    noTrimWrap = |<li id="cat| |
  }
  renderObj.15 = TEXT
  renderObj.15 {
    field = categories
    wrap = |">
  }
  renderObj.20 = TEXT
  renderObj.20 {
    field = title
    stdWrap.typolink.parameter.field = uid
    stdWrap.typolink.additionalParams.dataWrap = |&type=104
    wrap = |</li>
  }
}
```

hier bekomme ich immer nur die Anzahl der Kategorien raus.

lg opaque

### [#4](https://www.typo3.net/d/119161-system-categories/4) · Chrissli · 2014-11-14

Vielleicht habe ich das ja falsch verstanden, aber ich glaube ich habe das was du willst mal mit tt_content gemacht, theoretisch sollte sich das einfach adaptieren lassen. Im Prinzip wir ein Teil deines renderObj ( z.b. 15 ) eine Subquery:

```typoscript
 20 = CONTENT
    20 {
      if.isTrue.field = categories
      table = tt_content
      select {
        uidInList.field = uid
        join = sys_category_record_mm ON tt_content.uid = sys_category_record_mm.uid_foreign JOIN sys_category ON sys_category.uid = sys_category_record_mm.uid_local
        orderBy = sys_category.sorting        
      }
      renderObj = TEXT
      renderObj.field = title
      renderObj.noTrimWrap = || |
    }
```

Allerdings solltest du aus deinem

```html
<li id="
```

evtl. ein "class" machen.

### [#5](https://www.typo3.net/d/119161-system-categories/5) · opaque · 2014-11-14

Damit bekomme ich aber leider keine Kategorien ausgegeben.

```typoscript
temp.pro = CONTENT
temp.pro {
  wrap = <h2>Produkte</h2><ul id="categories">|</ul>
  table = pages
  select {
    uidInList.field = uid
    pidInList = 24
    selectFields = *
  }
  renderObj = COA
  renderObj.5 = TEXT
  renderObj.5 {
    value = <li class="
  }
  
  ## AB HIER STIMMT WAS NICHT
  renderObj.10 = CONTENT
  renderObj.10 {
    if.isTrue.field = categories
    wrap = |">
    table = tt_content
    select {
      uidInList.field = uid
      join = sys_category_record_mm ON tt_content.uid = sys_category_record_mm.uid_foreign JOIN sys_category ON sys_category.uid = sys_category_record_mm.uid_local
      orderBy = sys_category.sorting
    }
    renderObj = TEXT
    renderObj.field = title
    renderObj.noTrimWrap = |cat| |
  }
  ## BIS HIERHER
  renderObj.20 = TEXT
  renderObj.20 {
    field = title
    stdWrap.typolink.parameter.field = uid
    stdWrap.typolink.additionalParams.dataWrap = |&type=104
    wrap = |</li>
  }
}
```

Ausgabe:

```html
<li class="">
	<a href="index.php?id=25&amp;L=0&amp;type=104">Produkt1</a>
</li>
<li class="">
	<a href="index.php?id=26&amp;L=0&amp;type=104">Produkt2</a>
</li>
<li class="">
	<a href="index.php?id=27&amp;L=0&amp;type=104">Produkt3</a>
</li>
```

Es sollte aber so aussehen:

```html
<li class="cat1 cat3 cat4">
	<a href="index.php?id=25&amp;L=0&amp;type=104">Produkt1</a>
</li>
<li class="cat3">
	<a href="index.php?id=26&amp;L=0&amp;type=104">Produkt2</a>
</li>
<li class="cat4">
	<a href="index.php?id=27&amp;L=0&amp;type=104">Produkt3</a>
</li>
```

lg opaque

### [#6](https://www.typo3.net/d/119161-system-categories/6) · jenses · 2014-11-14

Warum denn in Zeile 21 plötzlich "table = tt_content"?
Ich dachte, du hast deinen Seiten Kategorien zugeordnet?

### [#7](https://www.typo3.net/d/119161-system-categories/7) · opaque · 2014-11-14

Hallo jenses

danke für den Tipp so geht es. Sollte es mal jemand brauchen:

Im Sysfolder mit der ID 24 liegen die Kategorien.
temp.cat erzeugt eine Liste mit Kagegorien.
temp.pro erzeugt eine Liste mit den Seiten und fügt die Kategorie ID als Klasse ein.
der typolink lädt dann die Seite via ajax.

```typoscript
temp.cat = CONTENT
temp.cat {
  wrap = <h2>Kategorien</h2><ul id="categories">|</ul>
  table = sys_category
  select {
    pidInList = 24
    selectFields = *
    join = sys_category_record_mm ON sys_category_record_mm.uid_local = sys_category.uid
    where.data = field:uid
    groupBy = sys_category.title
    orderBy = sys_category_record_mm.sorting_foreign
    languageField = sys_category.sys_language_uid
  }
  renderObj = COA
  renderObj.10 = TEXT
  renderObj.10 {
    field = uid
    wrap = <li id="cat|">
  }
  renderObj.20 = TEXT
  renderObj.20 {
    field = title
    wrap = |</li>
  }
}


temp.pro = CONTENT
temp.pro {
  wrap = <h2>Produkte</h2><ul id="products">|</ul>
  table = pages
  select {
    uidInList.field = uid
    pidInList = 24
    selectFields = *
  }
  renderObj = COA
  renderObj.5 = TEXT
  renderObj.5 {
    value = <li class="
  }
  renderObj.10 = CONTENT
  renderObj.10 {
    if.isTrue.field = categories
    wrap = |">
    table = pages   
    select {
      uidInList.field = uid
      pidInList = 24
      selectFields = *
      join = sys_category_record_mm ON pages.uid = sys_category_record_mm.uid_foreign JOIN sys_category ON sys_category.uid = sys_category_record_mm.uid_local
      groupBy = sys_category.uid
    }
    renderObj = TEXT
    renderObj.field = uid
    renderObj.noTrimWrap = |cat_| |
  }

  renderObj.20 = TEXT
  renderObj.20 {
    field = title
    stdWrap.typolink.parameter.field = uid
    stdWrap.typolink.additionalParams.dataWrap = |&type=104
    wrap = |</li>
  }
}

lib.content_ts = COA
lib.content_ts.10 < temp.cat
lib.content_ts.20 < temp.pro
```

lg opaque

---

Quelle: „System Categories“, typo3.net, https://www.typo3.net/d/119161-system-categories
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
