Typoscript добавить каждый 4-й элемент div - PullRequest
0 голосов
/ 19 мая 2019

У меня есть следующий скрипт, который печатает элементы на моей странице.

lib.unterseiten = CONTENT
lib.unterseiten {
  table = pages
  select {
    pidInList.field = 10
    orderBy = sorting
  }
  renderObj = COA
  renderObj.wrap = <div class='col-md-3'>|</div>
  renderObj {
    10 = TEXT
    10.field = title
    10.wrap = <h2>|</h2>
    20 = CONTENT
    20 {
      table = tt_content
      select {
        pidInList.field = uid
        orderBy = sorting
      }
      renderObj = COA
      renderObj {

        #Bild auslesen
        30 = FILES
        30 {
          maxItems = 1
          references {
            table = tt_content
            uid.data = field:uid
            fieldName = image
            maxItems = 1
         }

         renderObj = IMAGE
         renderObj.file.import.data = file:current:uid
         renderObj.file.treatIdAsReference = 1
         renderObj.wrap = <div class="thumbnail bild">|</div>
          renderObj.stdWrap.maxItems = 1
      }
        40 = TEXT
        40.value = Mehr Infos
        40.typolink.ATagParams = class="btn btn-primary"
        40.typolink.parameter.data  = field:pid
      }
    }

  }
}

page.20.marks.kumulierterInhalt  < lib.unterseiten

Можно ли добавить после каждого 4-го элемента div?

Заранее спасибо.

UPDATE

lib.unterseiten = CONTENT
lib.unterseiten {
  table = pages
  select {
    pidInList.field = 10
    orderBy = sorting
  }
  renderObj = COA
  renderObj.wrap = <div class='col-md-3'>|</div>
  renderObj {
    10 = TEXT
    10.field = title
    10.wrap = <h2>|</h2>
    20 = CONTENT
    20 {
      table = tt_content
      select {
        pidInList.field = uid
        orderBy = sorting
      }
      renderObj = COA
      renderObj {

        #Bild auslesen
        30 = FILES
        30 {
          maxItems = 1
          references {
            table = tt_content
            uid.data = field:uid
            fieldName = image
            maxItems = 1
         }

         renderObj = IMAGE
         renderObj.file.import.data = file:current:uid
         renderObj.file.treatIdAsReference = 1
         renderObj.wrap = <div class="thumbnail bild">|</div>
          renderObj.stdWrap.maxItems = 1
      }
        40 = TEXT
        40.value = Mehr Infos
        40.typolink.ATagParams = class="btn btn-primary"
        40.typolink.parameter.data  = field:pid
      }
    }
     99 = TEXT
     99.value = ###SEPARATOR###
  }


   stdWrap {
        split {
            token = ###SEPARATOR###
            cObjNum = |*| 1 || 1 || 1 || 2 |*|

            1.current = 1

            2.current = 1
            2.wrap = | <br><br><hr class="separatorline" />
        }
    }

}

page.20.marks.kumulierterInhalt  < lib.unterseiten

1 Ответ

1 голос
/ 20 мая 2019

перенос итерации по массиву обычно выполняется с optionsplit в typoscript.
упаковка каждого 4-го элемента будет:

|*| || || || |<div>...</div> |*| 

, но попытка сделать это с renderObj приведет к повторению первой обертки, поскольку каждый renderObj имеет свой собственный контекст, начиная optionsplit заново.

Обходной путь будет:
оберните каждый элемент специальным шаблоном, например: ###SEPARATOR###, и разбейте полученную строку, чтобы обернуть ее снова.

lib.unterseiten {
    renderObj {
        wrap = <div class='col-md-3'>|</div>###SEPARATOR###
        : 
        :
        #99 = TEXT
        #99.value = ###SEPARATOR###
    }
    stdWrap {
        split {
            token = ###SEPARATOR###
            cObjNum = |*| 1 || 1 || 1 || 2 |*|

            1.current = 1

            2.current = 1
            2.wrap = |<div>...</div>
        }
    }
}
...