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
相关产品推荐
相关产品推荐

