我是Fluid扩展套件(flux、fluidcontent、fluidpages等)的作者,当然希望能帮助您学习如何使用FluidContent来制作FCE。它其实并没有想象中那么高级。至少,它比上面的例子要简洁得多。下面的代码可以在FluidContent中实现与您的示例相同的结果:
TypoScript(静态加载:css_styled_content,fluid_content)
plugin.tx_fed.fce.yourname {
templateRootPath = fileadmin/Templates # if you don't want to use an extension (1)
# partial and layout root paths not defined (2)
}
关于(1),你真的应该这样做。使用扩展可以将用户上传的媒体等与网站内容分开。如果你选择这样做,只需使用EXT:...路径到私有资源文件夹即可。而且关于(2),这些路径仅在您实际希望使用部分时才需要。
然后,模板文件本身(当添加文件所在路径的TS时自动检测):
{namespace flux=Tx_Flux_ViewHelpers}
<f:layout name="Content" />
<f:section name="Configuration">
<flux:flexform id="columns" label="Columns" icon="path/to/iconfile.jpg">
<flux:flexform.grid>
<flux:flexform.grid.row>
<flux:flexform.grid.column>
<flux:flexform.content name="left" label="Left content" />
</flux:flexform.grid.column>
<flux:flexform.grid.column>
<flux:flexform.content name="right" label="Right content" />
</flux:flexform.grid.column>
</flux:flexform.grid.row>
</flux:flexform.grid>
</flux:flexform>
</f:section>
<f:section name="Preview">
<flux:widget.grid />
</f:section>
<f:section name="Main">
<div class="row">
<div class="span6">
<flux:flexform.renderContent area="left" />
</div>
<div class="span6">
<flux:flexform.renderContent area="right" />
</div>
</div>
</f:section>
如你所见,您完全可以添加任何你想要的HTML,使用任何ViewHelpers(甚至呈现TS对象,如果这是您的需求)。要添加其他内容元素,只需添加新的模板文件-它们将自动被识别。
但它与IRRE(您也可以使用Flux字段实现IRRE - 如果您希望看到演示,请告诉我)有所不同:它允许您使用TYPO3中的本地拖放来将子内容元素置于实际内容容器中-就像您以前在TV上做的那样。
因此,Fluid Content可能是最接近TV的。
关于Flux过度的问题,我想给您一个它所执行的实际情况:
- 缓存读取TS以了解路径
- 缓存有关检测到的模板的列表
- Flux仅使用Fluid存储配置,从而使其成为原生PHP
- Flux本身会注册一个挂钩订阅者,以响应保存内容,这会使后端变慢(无法察觉)
- Flux本身不会对FE产生负载,除了一种情况:当处于未缓存的插件(FluidContent已缓存!)时,Flux可能会调用本机PHP缓存代码以读取配置。
- FluidContent由一个极其简单的控制器组成;输出是完全缓存的。
- 您可能想添加VHS ViewHelper集合-它本身不会产生任何负载:它仅在您使用其ViewHelpers时使用资源。它包含大量的ViewHelpers,我相信您会发现它们非常有用。
一开始可能看起来有点压抑,但是我保证你需要了解和记住的内容比pibase、FlexForm XML、TS或本地Extbase插件要少得多。如果您想具备更多的安全保障,我强烈建议您在编辑器中使用XSD模式-这将为您提供特殊标签等自动完成功能。
但是:它将需要您学习Fluid的逻辑:哪些是Layouts和Partials(您很可能希望在某个时候使用它们),以及如何使用特殊标签和引用变量(这在其他用例中将是必需的,但不是手头的用例;它只需要简单的ViewHelper标签)。
希望这可以帮助您,并减轻您对Flux过度和太多要学习的恐惧感 ;)
祝好,Claus aka. NamelessCoder