有没有办法让前端布局决定后端布局、模板文件和列?
目前我有以下代码,允许您设置后端布局并使用适当的模板文件。但是,当每个布局有不同的列位置时,这会变得非常困惑。
page.10 = FLUIDTEMPLATE
page.10 {
#format = html
file= fileadmin/templates/example/partials/example_home.html
partialRootPath = fileadmin/templates/example/partials/
layoutRootPath = fileadmin/templates/example/layouts/
variables {
# Assign the Columns
main < styles.content.get
main.select.where = colPos = 0
news < styles.content.get
news.select.where = colPos = 1
}
}
}
# Assign the Template files with the Fluid Backend-Template
page.10.file.stdWrap.cObject = CASE
page.10.file.stdWrap.cObject {
key.data = levelfield:-1, backend_layout_next_level, slide
key.override.field = backend_layout
# Set the default Template
default = TEXT
default.value = fileadmin/templates/example/partials/example_home.html
# Set a second Template
23 = TEXT
23.value = fileadmin/templates/example/partials/example_internal.html
}
最佳答案
一点也不困惑,这是一个现实世界的例子:
page.10 = FLUIDTEMPLATE
page.10 {
file.stdWrap.cObject = CASE
file.stdWrap.cObject {
key.data = pagelayout
default = TEXT
default.value = {$customPagesTemplatePath}/Standard.html
1 = TEXT
1.value = {$customPagesTemplatePath}/Home.html
2 = TEXT
2.value = {$customPagesTemplatePath}/Landing.html
10 = TEXT
10.value = {$customPagesTemplatePath}/NewsDetail.html
11 = TEXT
11.value = {$customPagesTemplatePath}/LandingMini.html
12 = TEXT
12.value = {$customPagesTemplatePath}/FullWidth.html
}
layoutRootPath = {$customPagesLayoutPath}
partialRootPath = {$customPagesPartialPath}
}
这样想:
正如你所说,忘记前端布局。这就是遗产; be布局服务于BE和FE。
如果页面是一座城市,那么 colPos 就是街道。或者更确切地说,想象后端是您正在绘制的 map ,前端是您根据该 map 构建的乐高城市:-))如果可以,我会坚持使用这个比喻。
ColPos 是记录所在页面的确定部分。如果可以的话,请查看数据库中的 tt_content 表:您将看到 colPos 只是一列带有数字的列。因此,在城市“Page 1”中,有一条名为“colPos 7”的街道,其中包含一些记录(这些记录是房屋)。使用 TYPO3 中的 be_layout 向导,您将创建该城市的行政 map :编辑器应如何查看这些街道。
在根据所选 be_layout 调用的 FLUIDTEMPLATE
中,您将创建城市本身;渲染的前端。
这是此类流体模板的另一个现实示例 (Home.html):
<f:render partial="Mobilenav" />
<f:render partial="Header"/>
<div class="row">
<f:cObject typoscriptObjectPath="lib.home-teaser" />
</div>
<aside>
<div class="row">
<div class="columns">
<div class="row">
<div class="fp-teaser-outer small-48 medium-24 large-12 columns">
<div class="fp-teaser-box-wrapper">
<f:cObject typoscriptObjectPath="lib.home-something" />
</div>
</div>
<div class="fp-teaser-outer small-48 medium-24 large-12 columns">
<div class="fp-teaser-box-wrapper">
<f:cObject typoscriptObjectPath="lib.home-somethingelse" />
</div>
</div>
<div class="fp-teaser-outer small-48 medium-24 large-12 columns">
<div class="fp-teaser-box-wrapper">
<div class="fp-teaser-box">
<f:cObject typoscriptObjectPath="lib.home-news-plugin-title" />
<div class="fp-teaser-hr"></div>
<div class="fp-teaser-content">
<f:cObject typoscriptObjectPath="lib.home-news" />
</div>
</div>
</div>
</div>
<div class="fp-teaser-outer small-48 medium-24 large-12 columns">
<div class="fp-teaser-box-wrapper">
<div class="fp-teaser-box">
<f:cObject typoscriptObjectPath="lib.home-blog-plugin-title" />
<div class="fp-teaser-hr"></div>
<div class="fp-teaser-content">
<f:cObject typoscriptObjectPath="lib.home-blog" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</aside>
<f:render partial="Footer"/>
...好吧,但是与 colPos 的相关性在哪里? 还无处可去!我(虽然确信还有其他方法)在 TypoScript 中这样做:
lib.home-something < styles.content.get
lib.home-something {
select.where = colPos = 7
}
因此,我们为 Fluid 模板准备内容:获取该页面第 7 列的所有内容(使用扩展 Fluid_styled_content)并将其放入“lib”内容对象中。
然后通过 f:cObject
viewhelper 将其插入页面:
<f:cObject typoscriptObjectPath="lib.home-something" />
像这样,第七街上的所有房屋都会准确地放入城市中的这个位置 - 从而呈现在您的页面中。
关于typo3 - 如何让前端布局确定列和后端布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37268929/