[Frage] fluid variable mit uidinlist nutzen

  • Averlon Averlon
    Padawan
    0 x
    48 Beiträge
    0 Hilfreiche Beiträge
    19. 01. 2016, 09:22

    Hallo,
    ich habe eine installation mit bootstrap_package.

    Über ein backend layout wird ein fluid templat/partial aufgerufen.

    Dort steht im original in der Footer.html:

    1. <section class="footer-section">
    2. <div class="container">
    3. <div class="row">
    4. <div class="col-sm-4">
    5. <f:cObject typoscriptObjectPath="lib.dynamicContentSlide" data="{pageUid: '{data.uid}', colPos: '10'}"/>
    6. </div>
    7. <div class="col-sm-4">
    8. <f:cObject typoscriptObjectPath="lib.dynamicContentSlide" data="{pageUid: '{data.uid}', colPos: '11'}"/>
    9. </div>
    10. <div class="col-sm-4">
    11. <f:cObject typoscriptObjectPath="lib.dynamicContentSlide" data="{pageUid: '{data.uid}', colPos: '12'}"/>
    12. </div>
    13. </div>
    14. </div>
    15. </section>
    16. .....

    Jetzt würde ich gerne die UID durch eine variable ersetzen die ich in den constants setzen kann.

    Folgendes habe ich gemacht:

    In meinen constants habe ich gesetzt:

    1. plugin.bootstrap_package {
    2. settings {
    3. TeaserUid = 1
    4. FooterLeftUid = 6
    5. FooterCenterUid =
    6. FooterRightUid = 20
    7. }
    8. }

    In meinem setup habe ich gesetzt:

    1. page.10.variables.TeaserUid = TEXT
    2. page.10.variables.TeaserUid.value = {$plugin.bootstrap_package.settings.TeaserUid}
    3. page.10.variables.FooterLeftUid = TEXT
    4. page.10.variables.FooterLeftUid.value = {$plugin.bootstrap_package.settings.FooterLeftUid}
    5. page.10.variables.FooterCenterUid = TEXT
    6. page.10.variables.FooterCenterUid.value = {$plugin.bootstrap_package.settings.FooterCenterUid}
    7. page.10.variables.FooterRightUid = TEXT
    8. page.10.variables.FooterRightUid.value = {$plugin.bootstrap_package.settings.FooterRightUid}

    Da lib.dynamicContent auch für andere Dinge genutzt wird habe ich eine eigene definition im setup eingefügt:

    1. lib.dynamicFooter = COA
    2. lib.dynamicFooter {
    3. 5 {
    4. colPos.cObject = TEXT
    5. colPos.cObject {
    6. field = colPos
    7. value.current = 1
    8. ifEmpty = 0
    9. }
    10. }
    11. footerUid.cObject = TEXT ***** hier neu *****
    12. footerUid.cObject { ***** hier neu *****
    13. field = footerUid ***** hier neu und das ist mir auch noch unklar *****
    14. }
    15. contentFromPid.cObject = TEXT
    16. contentFromPid.cObject {
    17. data = DB:pages:{register:pageUid}:content_from_pid
    18. }
    19. }
    20. }
    21. 20 < styles.content.get
    22. 20 {
    23. where = colPos={register:colPos}
    24. where.insertData = 1
    25. pidInList.data = register:pageUid
    26. pidInList.override.data = register:contentFromPid
    27. uidInList = {REGISTER:footerUid} ***** hier neu *****
    28. }
    29. dataWrap = {register:wrap}
    30. }
    31. }
    32. }

    Dann das fluid template geändert:

    1. <section class="footer-section">
    2. <div class="container">
    3. <div class="row">
    4. <div class="col-sm-4">
    5. <f:debug title="FooterLeftUid">{FooterLeftUid}</f:debug>
    6. <f:cObject typoscriptObjectPath="lib.dynamicFooter" data="{footerUid: '{FooterLeftUid}', colPos: '10'}"/>
    7. </div>
    8. <div class="col-sm-4">
    9. <f:cObject typoscriptObjectPath="lib.dynamicFooter" data="{footerUid: '{FooterCenterUid}', colPos: '11'}"/>
    10. </div>
    11. <div class="col-sm-4">
    12. <f:cObject typoscriptObjectPath="lib.dynamicFooter" data="{footerUid: '{FooterRightUid}', colPos: '12'}"/>
    13. </div>
    14. </div>
    15. </div>
    16. </section>

    Der debug zeigt mir, dass die variable im fluid template Footer.html ankommt. Aber wie wird im lib.dynamicFooter wohl nicht richtig umgesetzt.

    Ich könnte mir vorstellen, dass ich schon auf dem richtigen weg bin - aber eben noch nicht angekommen.

    Wer könnte mir da den entscheidenden tip gebe ?
    Danke

    Gruß
    Kallewirsch

    TYPO3: 9.5.0


  • 1
  • Averlon Averlon
    Padawan
    0 x
    48 Beiträge
    0 Hilfreiche Beiträge
    19. 01. 2016, 16:06

    Hi alle,
    mit viel testen selbst gelöst:

    1. <section class="footer-section">
    2. <div class="container">
    3. <div class="row">
    4. <div class="col-sm-4">
    5. <f:cObject typoscriptObjectPath="lib.dynamicFooter" data="{pageUid: '{FooterPageUid}', footerUid: '{FooterLeftUid}', colPos: '10'}"/>
    6. </div>
    7. <div class="col-sm-4">
    8. <f:cObject typoscriptObjectPath="lib.dynamicFooter" data="{pageUid: '{FooterPageUid}', footerUid: '{FooterCenterUid}', colPos: '11'}"/>
    9. </div>
    10. <div class="col-sm-4">
    11. <f:cObject typoscriptObjectPath="lib.dynamicFooter" data="{pageUid: '{FooterPageUid}', footerUid: '{FooterRightUid}', colPos: '12'}"/>
    12. </div>
    13. </div>
    14. </div>
    15. </section>

    Ich muss ein zusätzliche konstante FooterPageUID übergeben weil ansonste die falsche PID genutzt wird.

    Und es muss lauten:

    1. uidInList.data =

    das .data hat gefehlt.

    Das gesamte TS:

    1. lib.dynamicFooter = COA
    2. lib.dynamicFooter {
    3. 5 {
    4. colPos.cObject = TEXT
    5. colPos.cObject {
    6. field = colPos
    7. value.current = 1
    8. ifEmpty = 0
    9. }
    10. }
    11. footerUid.cObject = TEXT
    12. footerUid.cObject {
    13. field = footerUid
    14. intval = 1
    15. }
    16. pageUid.cObject = TEXT
    17. pageUid.cObject {
    18. field = pageUid
    19. }
    20. }
    21. }
    22. 20 < styles.content.get
    23. 20 {
    24. where = colPos={register:colPos}
    25. where.insertData = 1
    26. pidInList.data = register:pageUid
    27. uidInList.data = register:footerUid
    28. }
    29. dataWrap = {register:wrap}
    30. }
    31. }
    32. }
    33. lib.dynamicFooter.20.slide = -1

    So funktioniert das mit dem Nachbarn!

    Gruß
    Kallewirsch

    TYPO3: 9.5.0

  • 1