Typo3 V6:如何创建内容元素容器?(没有电视)

Mau*_*ice 10 php mysql typo3 fluid extbase

对于一个我正在使用Typo3 v6.0的项目.我正在寻找创建嵌套的内容元素或内容元素容器.我希望能够在不使用特定模板的情况下创建内联双列布局.我希望使用templavoila 这样做.

我曾尝试扩展是gridelements,kb_nescefe,bs_fce,multicolumn但这些不工作,因为它们与TYPO3的V6兼容.

我的目标是像附加图像那样的最终结果.内联双列内容可以省略,使用一次或多次使用,包含任何其他内容元素.

我在这里寻找最简单的解决方案.我更喜欢不需要flux诸如此类的解决方案中投入大量学习时间(http://fedext.net/ - 看起来很酷,但现在也耗费时间)

有任何想法吗?

具有内联双列内容的示例布局

Cla*_*Due 14

我是Fluid扩展套件的作者(流量,流体含量,流体页面等),当然希望帮助您了解使用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)
}
Run Code Online (Sandbox Code Playgroud)

关于(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>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,您可以完全自由地添加任何您想要的HTML,使用任何ViewHelpers(如果那是你的东西,甚至渲染TS对象).要添加其他内容元素,只需添加新模板文件 - 它们将自动被识别.

但它的工作方式与IRRE不同(你也可以使用Flux字段实现 - 如果你希望看到它的演示,请告诉我):它会让你使用TYPO3中的原生拖放来放置你的孩子将内容元素转换为实际内容容器 - 就像您以前使用电视一样.

因此,Fluid Content可能是您最接近电视的内容.

关于Flux过度杀戮,我想告诉你它实际上的表现:

  • 缓存读取TS以了解路径
  • 检测到的模板的缓存列表
  • 流体缓存到本机PHP,Flux仅使用Fluid来存储配置(这意味着它一直是本机PHP)
  • Flux本身确实注册了一个钩子用户,它对正在保存的内容作出反应,这确实会减慢后端(不明显)
  • Flux本身不会在FE上创建负载,但有一个例外:在未缓存的插件中(FluidContent被缓存!)Flux可能会调用本机PHP缓存代码来读取配置.
  • FluidContent由一个非常简单的控制器组成; 输出完全缓存.
  • 您可能希望添加VHS ViewHelper集合 - 它本身创建绝对零负载:它仅使用您使用其ViewHelpers的资源.它包含一堆ViewHelpers我相信你会发现它很有用.

一开始看起来可能看起来很难,但我保证你不会知道和记住比pibase,FlexForm XML,TS或本机Extbase插件更少.如果您想要更多的安全网,我强烈建议您在编辑器中使用XSD架构 - 这可以让您自动完成特殊<flux:....>标签和其他标签.

但是:它需要你学习一点关于Fluid的逻辑:什么是Layouts和Partials(你很可能想在某些时候使用它们)以及如何使用特殊标签并引用变量(这将是其他用例 - 但不是手头的用例;它只需要简单的ViewHelper标记).

我希望这有帮助.而且我已经减少了你对Flux过度杀戮和太多学习的恐惧;)

干杯,
克劳斯又名.NamelessCoder


mah*_*ltz 5

有一个startnext项目,其中grid_elements中的已知错误已得到修复.Afaik下一步是使grid_elements与TYPO3 6兼容.但是我想,它们需要几周才能发布.但是,也许他们将从版本2开始(这些日子将与TYPO3 6兼容......).

看看锻造项目.


Mau*_*ice 4

好吧,我有半解决方案。我使用WEC 内容元素插件来管理自定义内容元素。

然后我使用了以下 Flexform:

<T3DataStructure>
    <ROOT>
        <type>array</type>
        <el>
            <leftColumn>
                <TCEforms type="array">
                    <label>Left column</label>
                    <config>
                        <type>inline</type>
                        <foreign_table>tt_content</foreign_table>
                        <maxitems>100</maxitems>
                        <appearance>
                            <showSynchronizationLink>0</showSynchronizationLink>
                            <showAllLocalizationLink>0</showAllLocalizationLink>
                            <showPossibleLocalizationRecords>0</showPossibleLocalizationRecords>
                            <showRemovedLocalizationRecords>0</showRemovedLocalizationRecords>
                            <expandSingle>1</expandSingle>
                        </appearance>
                    </config>
                </TCEforms>
            </leftColumn>
            <rightColumn>
                <TCEforms type="array">
                    <label>Right column</label>
                    <config>
                        <type>inline</type>
                        <foreign_table>tt_content</foreign_table>
                        <maxitems>100</maxitems>
                        <appearance>
                            <showSynchronizationLink>0</showSynchronizationLink>
                            <showAllLocalizationLink>0</showAllLocalizationLink>
                            <showPossibleLocalizationRecords>0</showPossibleLocalizationRecords>
                            <showRemovedLocalizationRecords>0</showRemovedLocalizationRecords>
                            <expandSingle>1</expandSingle>
                        </appearance>
                    </config>
                </TCEforms>
            </rightColumn>
        </el>
    </ROOT>
</T3DataStructure>
Run Code Online (Sandbox Code Playgroud)

以及以下前端打字稿设置:

tt_content.twoColumnContainer = COA
tt_content.twoColumnContainer {
  10 = < lib.stdheader

  20 = COA
  20 {
    wrap = <div class="twocolumn-container"> | </div>

    10 = RECORDS
    10 {
        tables       = tt_content
        dontCheckPid = true
        source.data  = t3datastructure : pi_flexform->leftColumn
        wrap         = <div class="twocolumn-left"> | </div>
    }

    20 = RECORDS
    20 {
        tables       = tt_content
        dontCheckPid = true
        source.data  = t3datastructure : pi_flexform->rightColumn
        wrap         = <div class="twocolumn-right"> | </div>
    }
}
Run Code Online (Sandbox Code Playgroud)

这导致了使用IRRE编辑器添加/编辑内容元素的后端内容元素。不过,容器元素没有预览,并且两列位于彼此下方(而不是彼此相邻)。所有这一切都是我经过几个小时的谷歌搜索和尝试各种方法/插件后找到的唯一可行的解​​决方案。

希望这对某人有帮助。