Menü durch DB Feld filtern

  • daniel_m_ww daniel_m_...
    Sternenflotten-Admiral
    0 x
    186 Beiträge
    0 Hilfreiche Beiträge
    23. 01. 2011, 21:42

    Hallo zusammen,

    Habe da mal eine Frage. Momentan habe ich ein Menü dass ca 800 seiten umfasst. Diese sind in Bereiche aufgeteilt, die farblich markiert sind. So wird für die seiten eine css klasse hinzugefügt, die dann die Farbe ändert.

    Jetzt möchte ich ein weiteres feld hinzufügen, anhand dessen das Menü gefiltert wird. Der besucher bekommt beim ersten aufruf der Seite die Frage nach Bereich, und wenn er gewählt hat sollen alle anderen Bereiche nicht angezeigt werden. Habe jetzt daran gedacht, bei den anderen Bereichen die per css auszublenden. Weiß aber nicht genau wie ich den gewählten bereich ins ts bekomme.

    Habe eine extension, die die auswahl in einer session speichert. Kan ich per ts die direkt lesen?

    Sollten die menüs besser direkt gefiltert werden?

    Jemand eine Tip für mich? Würde ich freuen :)

    Mfg


  • 1
  • daniel_m_ww daniel_m_...
    Sternenflotten-Admiral
    0 x
    186 Beiträge
    0 Hilfreiche Beiträge
    24. 01. 2011, 10:31

    Hey nochmal,

    hatte heute noch eine Idee, welche ich erstmal ausprobieren werde, bzw. versuchen werde.

    Und zwar den Bereich aus der DB jedem Menüpunkt mitgeben, dazu eine Neue CSS Klasse im LI Tag erstellen. Damit könnte ich beim aufrufen der Seite alle ausblenden, und diesen einen einblenden.
    Mein Problem ist, ob ich in meinem Menü da überhaupt so einfach ein DB-Feld abfragen kann und einbinden kann?

    hier mal mein Menü:

    1. temp.menu = HMENU
    2. temp.menu.special = directory
    3. temp.menu.special.value = 2
    4. temp.menu {
    5. 1 = TMENU
    6. 1 {
    7. wrap = <ul class="menu_icons">|</ul>
    8. NO = 1
    9. NO {
    10. wrapItemAndSub = <li class="icon_a">|</li>
    11. ATagTitle.field = title
    12. }
    13. ACT = 1
    14. ACT {
    15. wrapItemAndSub = <li class="icon_a a_active">|</li>
    16. }
    17. }
    18. 2 < .1
    19. 2 {
    20. wrap = <ul class="submenu_icons">|</ul>
    21. NO = 1
    22. NO {
    23. wrapItemAndSub = <li class="subicon_a">|</li>
    24. ATagTitle.field = title
    25. }
    26. ACT < .NO
    27. ACT {
    28. wrapItemAndSub = <li class="subicon_a active">|</li>
    29. stdWrap.prepend.value = <span class="roter_pfeil">&gt;</span>&nbsp;
    30. }
    31. }
    32. 3 < .2
    33. 3 {
    34. wrap = <ul>|</ul>
    35. NO = 1
    36. NO {
    37. wrapItemAndSub = <li class="sub_ebene3">|</li>
    38. ATagTitle.field = title
    39. }
    40. ACT < .NO
    41. ACT {
    42. wrapItemAndSub = <li class="sub_ebene3_active">|</li>
    43. stdWrap.prepend.value = <span class="roter_pfeil">&gt;</span>&nbsp;
    44. }
    45. }
    46. 4 < .3
    47. 4 {
    48. wrap = <ul>|</ul>
    49. NO = 1
    50. NO {
    51. wrapItemAndSub = <li class="sub_ebene4">|</li>
    52. ATagTitle.field = title
    53. }
    54. ACT < .NO
    55. ACT {
    56. wrapItemAndSub = <li class="sub_ebene4_active">|</li>
    57. stdWrap.prepend.value = <span class="roter_pfeil">&gt;</span>&nbsp;
    58. }
    59. }
    60. 5 < .4
    61. 5 {
    62. wrap = <ul>|</ul>
    63. NO = 1
    64. NO {
    65. wrapItemAndSub = <li class="sub_ebene5">|</li>
    66. ATagTitle.field = title
    67. }
    68. ACT < .NO
    69. ACT {
    70. wrapItemAndSub = <li class="sub_ebene5_active">|</li>
    71. stdWrap.prepend.value = <span class="roter_pfeil">&gt;</span>&nbsp;
    72. }
    73. }
    74.  
    75. }

    Damit die Farben funktionieren ändere ich so die wraps ab:

    1. temp.menu.1.NO.wrapItemAndSub.stdWrap.override.cObject = CASE
    2. temp.menu.1.NO.wrapItemAndSub.stdWrap.override.cObject {
    3. key.data = field:tx_dmproductgroup_dmpgroup
    4. 0 = TEXT
    5. 0 {
    6. value = <li class="no_class">|</li>
    7. }
    8. 1 = TEXT
    9. 1 {
    10. value = <li class="icon_a">|</li>
    11. }
    12. 2 = TEXT
    13. 2 {
    14. value = <li class="icon_b">|</li>
    15. }
    16. 3 = TEXT
    17. 3 {
    18. value = <li class="icon_c">|</li>
    19. }
    20. 4 = TEXT
    21. 4 {
    22. value = <li class="icon_d">|</li>
    23. }
    24. }

    Wahrscheinlich mach ich das viel zu umständlich? Jedenfalls weiß ich nun nicht wie ich da noch ein Datenbankfeld eintragen lassen könnte.
    Hab versucht, zum testen, einfach die ui mit {field:uid} und daraus dann <li class="icon_a uid_{field:uid}">|</li> zu erhalten. Leider ohne erfolg :(. Auch nicht mit insertData = 1.

    Hat jemand einen Tip für mich? Wäre super :)

    MfG

  • daniel_m_ww daniel_m_...
    Sternenflotten-Admiral
    0 x
    186 Beiträge
    0 Hilfreiche Beiträge
    29. 01. 2011, 10:16

    Moin,

    keiner eine Idee wie ich ein Datenbankfeld ins Menü bekomme? Muss jetzt sogar 2 haben :(... brauche das eigene Feld aus der pages Tabelle und die uid. Gibt es da irgendein Standard? Habe leider nichts gefunden :(

  • 0 x
    66 Beiträge
    0 Hilfreiche Beiträge
    18. 02. 2011, 22:33

    Hallo Daniel,
    versuche mal folgendes, der Code ist nur ein Auszug...

    1. NO {
    2. ATagParams = class="no pid{elementUid}"
    3. linkWrap = <li id="pid{elementUid}">|</li>
    4. subst_elementUid = 1
    5. }

    Siehe auch http://www.typo3.net/tsref/menu_objects/tmenuitem/

    Das könnte Dir zum Teil weiterhelfen.

  • daniel_m_ww daniel_m_...
    Sternenflotten-Admiral
    0 x
    186 Beiträge
    0 Hilfreiche Beiträge
    21. 02. 2011, 10:22

    Moin,

    danke für die Antwort. Habe es aber nun anders gelöst.
    Habe das Menü einfach Neu aufgebaut und überall das eingesetzt:

    1. NO = 1
    2. NO {
    3. wrapItemAndSub = <li class="uid_{field:uid} icon_{field:tx_dmpgroup}">|</li>
    4. wrapItemAndSub.insertData = 1
    5. ATagTitle.field = title
    6. }

    In dem Feld tx_dmpgroup steht ja nur 1, 2, 3 oder 4. Die Overrides haben aus 1 ein a, aus 2 ein b usw. für die CSS Klasse gemacht, daraus hab ich jetzt einfach icon_1 statt icon_a. Musste dafür das CSS zwar anpassen, aber hab alles was ich wollte :).

  • 1