如何将数组传递给FLUIDTEMPLATE?

时间:2014-02-18 15:31:21

标签: typo3 fluid-layout fluid

在新的Typo3安装中,我有一个这样的模板。

page = PAGE
page {

    10 = FLUIDTEMPLATE
    10 {
        file = fileadmin/default/templates/index.html
        ...

        variables {
            ...

            myPages = CONTENT
            myPages {
                table = pages
                select {
                    pidInList = 76
                    orderBy = sorting
                }
            }
        }
    }
}

现在我想在我的flowtemplate中迭代这些页面:

<f:for each="{myPages}" as="page">
    <f:format.raw>{page.title}</f:format.raw>
</f:for>

不幸的是,如果我做了 <f:debug title="debugger">{myPages}</f:debug> 它表明这是一个空字符串。

如何将所选内容对象的结果数组传递给FLUIDTEMPLATE?

更新

我解决了它创建自定义viewhelper,它返回给定parentId的页面数组。结果存储在流体变量中。

class Tx_Custom_ViewHelpers_Pages_GetViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {

    /**
     * Gets subpages for a given page.
     *
     * @param int $parentId ID of the parentpage.
     * @param string $target Target Variable
     */
    public function render($parentId, $target='content') {
        $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*', 'pages', 'pid=' . $parentId);
        if ($this->templateVariableContainer->exists($target) === TRUE) {
            $this->templateVariableContainer->remove($target);
        }
        $this->templateVariableContainer->add($target, $rows);
    }

}

模板中的用法:

{namespace cn=Tx_Custom_ViewHelpers}

<cn:pages.get parentId="{parentId}" target="pages"/>
<f:for each="{pages}" as="p">
    page: {p.title}
</f:for>

剩余的错字:

page = PAGE
page {

    10 = FLUIDTEMPLATE
    10{
        file = fileadmin/default/templates/index.html
        layoutRootPath = fileadmin/default/templates/layouts/
        partialRootPath = fileadmin/default/templates/partials/

        variables {
            content < styles.content.get
            parentId = TEXT
            parentId.value = 76
        }
    }

}

2 个答案:

答案 0 :(得分:1)

从TYPO3 6.1开始,您可以将数组分配给设置变量:

lib.globalSettings { # Access to constants works, too.
  foo = value
}

page = PAGE
page.10 = FLUIDTEMPLATE
page.10 {
  file = fileadmin/templates/MyTemplate.html
  settings < lib.globalSettings
}

http://jweiland.net/typo3/versionen-und-updates/version-61.html#c4300 http://forge.typo3.org/issues/23853

答案 1 :(得分:0)

您应该使用DataProcessing

page {
    10 {
        dataProcessing {
            999 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
            999 {
                table = pages
                pidInList = 76
                where = deleted=0 AND hidden=0
                orderBy = sorting
                markers.uid.field = uid
                as = myPages
            }
        }
    }
}

现在,您可以使用流体中的自定义变量myPages访问所有找到的记录的数组。
要查看孔阵列的内容,请使用

<f:debug title="debugger">{myPages}</f:debug>