TypoScript / Typo3: Как создать суб-контент страницы, используя значение header_link?

Как с помощью typoscript создать вспомогательное содержимое (вложенное содержимое) страницы со ссылкой на поле header_link родителя?

Желаемый результат выглядит примерно так:

<h1>Title of parent</h1>
<p class="prt">Body of parent</p>
<h3>Title of Child</h3>
<p class="cld">Contents of child</p>

Образец моего Опечатка:

temp.myParentVal = CONTENT
temp.myParentVal {
  table = tt_content
  select {
    begin = 1
    orderBy = sorting
    where = (colPos = 1)
  }
  renderObj = COA 
  renderObj {

  10 = TEXT  
  10 {
    required = 1
    wrap = <h1> | </h1>
    stdWrap.field = header
  }
  20 = TEXT  
  20 {
    required = 1
    wrap = <p class="prt"> | </p>
    stdWrap.field = bodytext
  }


  #                                                                #
  #  WHAT SHOULD I DO HERE TO SHOW THE CHILD CONTENT OF THIS PAGE  #
  #  (REFERENCED BY header_link FIELD IN THE PARENT'S ROW),        #
  #  WHICH HAS THE FORMAT OF <child_pid#child_uid>, EG.'11#28'     #
  #                                                                #


  stdWrap.wrap = <div> | </div>
}

Я хотел бы использовать значение родительского поля header_link для создания содержимого для дочернего элемента. (Я использую TYPO3 v. 6.2.14)


person Ren    schedule 12.09.2015    source источник


Ответы (1)


Вы можете использовать вложенный элемент CONTENT и разделить header_link с помощью Regex следующим образом:

30 = CONTENT
30 {
  table = tt_content
  select {
    uidInList {
      field = header_link
      stdWrap.replacement.10 {
        search = /^.+#/
        replace = 
        useRegExp = 1
      }
    }
    pidInList {
      field = header_link
      stdWrap.replacement.10 {
        search = /#.+$/
        replace = 
        useRegExp = 1
      }
    }
  }
  renderObj = COA
  renderObj {
    10 = TEXT  
    10.value {
      required = 1
      wrap = <h3> | </h3>
      field = header
    }
    20 = TEXT  
    20.value {
      required = 1
      wrap = <p class="cld"> | </p>
      field = bodytext
    }
  }
}

Кроме того, я хотел предложить вам использовать свойство field непосредственно на элементах TEXT (что работает). Но я посмотрел в документации:

Свойства stdWrap доступны на самом корневом уровне объекта. Это нестандартно! Вы должны использовать эти свойства stdWrap последовательно со свойствами других объектов cObject, обращаясь к ним через свойство «stdWrap».

https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Text/Index.html

Поскольку value является объектом stdWrap, вы можете использовать его, как я сделал выше.

person b263    schedule 13.09.2015