[Frage] System Categories TYPO3-Version: 6.2.7

  • opaque opaque
    Sternenflotten-Admiral
    0 x
    171 Beiträge
    0 Hilfreiche Beiträge
    12. 11. 2014, 16:30

    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:

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

    1. temp.pages = HMENU
    2. temp.pages {
    3. special = categories
    4. special.value = 1,2,3
    5. wrap = <div class="white"><div class="innerwrap"><h2>Produkte</h2><ul>|</ul></h1></div></div>
    6. 1 = TMENU
    7. 1.NO {
    8. allWrap = <li>|</li>
    9. }
    10. }

    lg opaque


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    13. 11. 2014, 08:46

    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.

  • opaque opaque
    Sternenflotten-Admiral
    0 x
    171 Beiträge
    0 Hilfreiche Beiträge
    13. 11. 2014, 20:39

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

    1. temp.cat = CONTENT
    2. temp.cat {
    3. wrap = <h2>KAtegorien</h2><ul id="categories">|</ul>
    4. table = pages
    5. uidInList.field = uid
    6. pidInList = 24
    7. selectFields = *
    8. 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
    9. where = sys_category_record_mm.tablenames = 'pages'
    10. andWhere.dataWrap = sys_category.sys_language_uid = {GP:L}
    11. groupBy = sys_category.title
    12. #orderBy = sys_category.sorting
    13. orderBy = sys_category.title
    14. }
    15. renderObj = COA
    16. renderObj.10 = TEXT
    17. renderObj.10 {
    18. field = uid
    19. wrap = <!!=|>
    20. }
    21. renderObj.20 = TEXT
    22. renderObj.20 {
    23. field = title
    24. stdWrap.typolink.parameter.field = uid
    25. stdWrap.typolink.additionalParams.dataWrap = |&type=104
    26. wrap = |</li>
    27. }
    28. }

    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.

    1. temp.pro = CONTENT
    2. temp.pro {
    3. wrap = <h2>Produkte</h2><ul id="categories">|</ul>
    4. table = pages
    5. uidInList.field = uid
    6.  
    7. pidInList = 24
    8. selectFields = *
    9. }
    10. renderObj = COA
    11. renderObj.10 = TEXT
    12. renderObj.10 {
    13. field = uid
    14. noTrimWrap = |<li id="cat| |
    15. }
    16. renderObj.15 = TEXT
    17. renderObj.15 {
    18. field = categories
    19. wrap = |">
    20. }
    21. renderObj.20 = TEXT
    22. renderObj.20 {
    23. field = title
    24. stdWrap.typolink.parameter.field = uid
    25. stdWrap.typolink.additionalParams.dataWrap = |&type=104
    26. wrap = |</li>
    27. }
    28. }

    hier bekomme ich immer nur die Anzahl der Kategorien raus.

    lg opaque

  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    14. 11. 2014, 08:20

    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:

    1. 20 = CONTENT
    2. 20 {
    3. if.isTrue.field = categories
    4. table = tt_content
    5. uidInList.field = uid
    6. 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
    7. orderBy = sys_category.sorting
    8. }
    9. renderObj = TEXT
    10. renderObj.field = title
    11. renderObj.noTrimWrap = || |
    12. }

    Allerdings solltest du aus deinem

    1. <li id="

    evtl. ein "class" machen.

    God's in his heaven, all's right with the world

  • opaque opaque
    Sternenflotten-Admiral
    0 x
    171 Beiträge
    0 Hilfreiche Beiträge
    14. 11. 2014, 10:42

    Damit bekomme ich aber leider keine Kategorien ausgegeben.

    1. temp.pro = CONTENT
    2. temp.pro {
    3. wrap = <h2>Produkte</h2><ul id="categories">|</ul>
    4. table = pages
    5. uidInList.field = uid
    6. pidInList = 24
    7. selectFields = *
    8. }
    9. renderObj = COA
    10. renderObj.5 = TEXT
    11. renderObj.5 {
    12. value = <li class="
    13. }
    14.  
    15. ## AB HIER STIMMT WAS NICHT
    16. renderObj.10 = CONTENT
    17. renderObj.10 {
    18. if.isTrue.field = categories
    19. wrap = |">
    20. table = tt_content
    21. uidInList.field = uid
    22. 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
    23. orderBy = sys_category.sorting
    24. }
    25. renderObj = TEXT
    26. renderObj.field = title
    27. renderObj.noTrimWrap = |cat| |
    28. }
    29. ## BIS HIERHER
    30. renderObj.20 = TEXT
    31. renderObj.20 {
    32. field = title
    33. stdWrap.typolink.parameter.field = uid
    34. stdWrap.typolink.additionalParams.dataWrap = |&type=104
    35. wrap = |</li>
    36. }
    37. }

    Ausgabe:

    1. <li class="">
    2. <a href="index.php?id=25&amp;L=0&amp;type=104">Produkt1</a>
    3. </li>
    4. <li class="">
    5. <a href="index.php?id=26&amp;L=0&amp;type=104">Produkt2</a>
    6. </li>
    7. <li class="">
    8. <a href="index.php?id=27&amp;L=0&amp;type=104">Produkt3</a>
    9. </li>

    Es sollte aber so aussehen:

    1. <li class="cat1 cat3 cat4">
    2. <a href="index.php?id=25&amp;L=0&amp;type=104">Produkt1</a>
    3. </li>
    4. <li class="cat3">
    5. <a href="index.php?id=26&amp;L=0&amp;type=104">Produkt2</a>
    6. </li>
    7. <li class="cat4">
    8. <a href="index.php?id=27&amp;L=0&amp;type=104">Produkt3</a>
    9. </li>

    lg opaque

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    14. 11. 2014, 12:43

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

  • opaque opaque
    Sternenflotten-Admiral
    0 x
    171 Beiträge
    0 Hilfreiche Beiträge
    14. 11. 2014, 15:38

    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.

    1. temp.cat = CONTENT
    2. temp.cat {
    3. wrap = <h2>Kategorien</h2><ul id="categories">|</ul>
    4. table = sys_category
    5. pidInList = 24
    6. selectFields = *
    7. join = sys_category_record_mm ON sys_category_record_mm.uid_local = sys_category.uid
    8. where.data = field:uid
    9. groupBy = sys_category.title
    10. orderBy = sys_category_record_mm.sorting_foreign
    11. languageField = sys_category.sys_language_uid
    12. }
    13. renderObj = COA
    14. renderObj.10 = TEXT
    15. renderObj.10 {
    16. field = uid
    17. wrap = <!!=|>
    18. }
    19. renderObj.20 = TEXT
    20. renderObj.20 {
    21. field = title
    22. wrap = |</li>
    23. }
    24. }
    25.  
    26.  
    27. temp.pro = CONTENT
    28. temp.pro {
    29. wrap = <h2>Produkte</h2><ul id="products">|</ul>
    30. table = pages
    31. uidInList.field = uid
    32. pidInList = 24
    33. selectFields = *
    34. }
    35. renderObj = COA
    36. renderObj.5 = TEXT
    37. renderObj.5 {
    38. value = <li class="
    39. }
    40. renderObj.10 = CONTENT
    41. renderObj.10 {
    42. if.isTrue.field = categories
    43. wrap = |">
    44. table = pages
    45. uidInList.field = uid
    46. pidInList = 24
    47. selectFields = *
    48. 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
    49. groupBy = sys_category.uid
    50. }
    51. renderObj = TEXT
    52. renderObj.field = uid
    53. renderObj.noTrimWrap = |cat_| |
    54. }
    55.  
    56. renderObj.20 = TEXT
    57. renderObj.20 {
    58. field = title
    59. stdWrap.typolink.parameter.field = uid
    60. stdWrap.typolink.additionalParams.dataWrap = |&type=104
    61. wrap = |</li>
    62. }
    63. }
    64.  
    65. lib.content_ts = COA
    66. lib.content_ts.10 < temp.cat
    67. lib.content_ts.20 < temp.pro

    lg opaque

  • 1