You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3:如何将扩展数据传递至后端布局?或获取当前布局名称

TYPO3扩展:布局获取数据与获取当前后端布局名称

一、在后端布局中获取扩展数据

完全可以实现,以下是两种常用方案:

1. 模板调用布局时传递参数

修改你的List.html,在调用布局时显式传递Mydata参数:

<f:layout name="Default" arguments="{Mydata: Mydata}"/>
<f:section name="main">
    <!-- 仅保留原main section的核心内容,左侧栏代码移至布局文件 -->
</f:section>

接着在MyLayout.html中直接使用{Mydata}渲染左侧栏:

<f:render partial="Structure/Header" arguments="{_all}"/>
<f:render partial="Menus/Main" arguments="{_all}"/>
<!-- 左侧栏代码 -->
<aside>
    <h2>Title</h2>
    <ul>
        <f:for each="{Mydata}" as="data">
            <li>{data.title}</li>
        </f:for>
    </ul>
</aside>
<f:render section="default" />

这种方式参数仅在当前模板-布局链中传递,无全局污染问题,是最推荐的方案。

2. 控制器全局分配数据

如果需要在多个布局/模板中复用该数据,可在扩展控制器的对应动作里,将数据分配为全局视图变量:

// 扩展控制器(如ListController.php)的list动作
public function listAction() {
    $mydata = $this->myDataRepository->findAll();
    // 分配给当前模板
    $this->view->assign('Mydata', $mydata);
    // 分配为全局变量,所有布局/模板均可访问
    $this->view->assign('globalMydata', $mydata);
}

之后在MyLayout.html中直接使用{globalMydata}即可渲染左侧栏。

二、通过TypoScript在list.html中获取当前后端布局名称

若上述方案不适用,可通过TypoScript将当前页面的后端布局信息传递到模板:

1. 获取布局ID

在站点TypoScript配置中添加:

page.10 = FLUIDTEMPLATE
page.10.variables {
    currentLayoutId = TEXT
    currentLayoutId.data = page:layout
}

之后在List.html中用{currentLayoutId}即可获取当前后端布局的ID值。

2. 获取布局名称

如果需要布局的标题名称,需从backend_layout表中查询,添加如下TypoScript:

page.10.variables {
    currentLayoutName = CONTENT
    currentLayoutName {
        table = backend_layout
        select {
            where = uid={page:layout}
            fields = title
        }
        renderObj = TEXT
        renderObj.field = title
    }
}

此时在List.html中使用{currentLayoutName}就能拿到当前后端布局的名称。

内容的提问来源于stack exchange,提问作者johndoe555

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:45:45