TYPO3 v7.6 - 如何在后台(页面模块)渲染tt_content内容

3

我正在处理一个 TYPO3 v7.6 项目,并创建了一个带有 flexform 的内容元素,其中包含一个类型字段,允许其他tt_content。以下是该字段的配置:

<config type="array">
    <type>group</type>
    <internal_type>db</internal_type>
    <allowed>tt_content</allowed>
    <size>5</size>
    <maxitems>200</maxitems>
    <minitems>0</minitems>
    <multiple>1</multiple>
    <show_thumbs>1</show_thumbs>
</config>

弹性表单工作正常,我能够在编辑时添加内容。然而,我需要允许用户将内容拖放到同一页内的该字段中,就像在以前版本中使用TemplaVoila时所能实现的那样。
我已经为tt_content_drawItem创建了一个钩子,它实现了PageLayoutViewDrawItemHookInterface接口,并且我能够更改我的插件的preProcess函数,但是我不知道如何创建一个具有“创建新内容元素”的投放区域,使tt_content能够被移动到其中。
看起来原始的TYPO3的DragDrop.js文件无法将其移动到内容元素中,只能移动到页面中。这是正确的吗?
是否有任何方法可以实现此功能,或者有任何扩展可以实现此功能?
编辑
经过几天的研究和尝试一些扩展,我找到了适合我的需求的解决方案。我正在使用fluidcontent扩展来创建一个内容元素,其中包含以下流体模板:
{namespace flux=FluidTYPO3\Flux\ViewHelpers}
<f:layout name="Default" />

<f:section name="Configuration">    
        <flux:grid>
                <flux:grid.row >
                    <flux:grid.column name="content" label="Content"/>
                </flux:grid.row>
            </flux:grid>
    </flux:form>
</f:section>

<f:section name="Preview">  
</f:section>

<f:section name="Main">
        <flux:content.render area="content" /> 
</f:section>

然而,对于包含内容区域的我的flexform字段,我仍然无法在后端拖放或甚至可视化内容。

2个回答

0

Gridelements扩展允许您在其他内容元素内创建内容元素(就像TemplaVoilà一样)。我还没有尝试过它是否允许您将内容元素拖动到其他位置,但如果它也涵盖了这个功能,我不会感到惊讶。


0
现在你需要做的就是将<flux:widget.grid />放入预览部分。
这是我的2列内容元素的代码(在后端包括拖放时可见):
{namespace flux=FluidTYPO3\Flux\ViewHelpers}

    <f:layout name="Content" />

    <f:section name="Configuration">
        <flux:form id="2column" label="2 Columns" options="{icon: 'Icons/Content/Example.gif', group: 'MyGroup'}">
        </flux:form>
        <flux:grid>
            <flux:grid.row>
                <flux:grid.column colPos="0" label="Column 1" style="width: 50%" name="column1" />
                <flux:grid.column colPos="1" label="Column 2" style="width: 50%" name="column2" />
            </flux:grid.row>
        </flux:grid>
    </f:section>

    <f:section name="Preview">
        <flux:widget.grid />
    </f:section>

    <f:section name="Main">
        <div class="twocolumn1">
            <flux:content.render area="column1" />
        </div>
        <div class="twocolumn2">
            <flux:content.render area="column2" />  
        </div>
        <div class="clear"></div>
    </f:section>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接