DCE集装箱圈

时间:2017-08-19 08:18:06

标签: typo3 fluid dce

我使用优秀的DCE扩展程序并希望使用每个子项的字段通过Child-DCE在Container中循环两次。

在Pseudocode中是这样的: 容器模板:

<div id="foo">
<f:for each="{dces}" as="dce">
    {dce.fields.title}
</f:for>
</div>
<div id="bar">
<f:for each="{dces}" as="dce">
    {dce.fields.bla}
</f:for></div>

我该怎么做?

3 个答案:

答案 0 :(得分:0)

我用Viewhelper解决了这个问题:

class DcevalViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
    /**
      * @param ArminVieweg\Dce\Domain\Model\Dce object
      *
      * @return array
      *
      */
    public function render($dce) {
      $contentObject = $dce->getContentObject();
      $temp = GeneralUtility::xml2array($contentObject['pi_flexform']);
      $temp = $temp['data']['sheet.tabGeneral']['lDEF'];
      foreach($temp as $key=>$val)  {
         preg_replace( "/\r|\n/", "", $val['vDEF'] );
         $dcedata[substr($key,9)]=$val['vDEF'];
         }
      $dcedata['uid']=$contentObject['uid'];
      return $dcedata;
      }
   }

在Containertemplate中(不需要儿童模板)

{namespace dce=ArminVieweg\Dce\ViewHelpers}
{namespace tom=Mediagmbh\Tomediavh\ViewHelpers}

<f:layout name="DefaultContainer" />

<f:section name="main">
<div id="foo">
<ul>
<f:for each="{dces}" as="dce">
  <f:alias map="{field:'{tom:Dceval(dce:dce)}'}">
  <li>{field.header}</li>
  </f:alias>
</f:for>
</ul>
</div

<div id="bar">
<f:for each="{dces}" as="dce">
  <f:alias map="{field:'{tom:Dceval(dce:dce)}'}">
  <div><f:format.raw>{field.text}</f:format.raw></div>
  </f:alias>
</f:for>
</div>
</div>

</f:section>

答案 1 :(得分:0)

{dces.0.get.title}可以解决问题。

答案 2 :(得分:-1)

在 DCE 容器定义中,只需使用

<div id="foo">
    <f:for each="{dces}" as="dce">
        {dce.get.title}
    </f:for>
</div>
<div id="bar">
    <f:for each="{dces}" as="dce">
        {dce.get.bla}
    </f:for>
</div>

模板中什么都没有(DCE 定义的第二个选项卡)。