11

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

我尝试过的扩展是gridelements, kb_nescefe, bs_fcemulticolumn但这些都不起作用,因为它们与 Typo3 V6 不兼容。

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

我在这里寻找最简单的解决方案。我宁愿不必flux在诸如此类的解决方案上投入大量学习时间( http://fedext.net/ - 看起来很酷,但现在也太耗时了)

有任何想法吗?

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

4

8 回答 8

15

我是 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 字段来实现 - 如果您希望看到演示,请告诉我):它会让您使用 TYPO3 中的原生拖放来放置您的孩子将内容元素放入实际的内容容器中 - 就像您过去对电视所做的那样。

因此,Fluid Content 可能是您最接近电视的地方。

关于 Flux 是矫枉过正,我想告诉你它的实际表现:

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

乍一看可能会让人不知所措,但我向您保证,与 pibase、FlexForm XML、TS 或原生 Extbase 插件相比,需要了解和记住的内容更少。如果您想要更多的安全网,我强烈建议您在编辑器中使用 XSD 模式 - 这可以让您自动完成特殊<flux:....>标签和其他标签。

但是:这需要您了解一点 Fluid 的逻辑:什么是 Layouts 和 Partials(您很可能希望在某些时候使用它们)以及如何使用特殊标签和引用变量(这将在其他用例——但不是手头的那个;它只需要简单的 ViewHelper 标签)。

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

干杯,
克劳斯。无名编码者

于 2013-03-12T19:40:20.860 回答
5

有一个startnext 项目,其中已修复 grid_elements 中的已知错误。Afaik 下一步是让 grid_elements 与 TYPO3 6 兼容。但我想,在发布之前需要几周时间。但是,也许他们将从版本 2 开始(这些天将与 TYPO3 6 兼容......)。

看看forge 项目

于 2013-03-07T14:12:20.370 回答
4

您可能想看看扩展 DCE ( http://typo3.org/extensions/repository/view/dce );在那里你可以自己定义内容元素。或者,您可以使用http://fedext.net/框架创建任何内容。只需阅读最新的博客文章,了解如何使用这些扩展创建动态内容元素。

于 2013-03-03T20:04:15.200 回答
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>

以及以下前端排版设置:

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>
    }
}

这导致使用IRRE编辑器添加/编辑内容元素的后端内容元素。容器元素虽然没有预览,但两列位于彼此下方(而不是彼此相邻)。所有这一切都是我在谷歌搜索和尝试各种方法/插件后发现的唯一可行的解​​决方案。

希望这可以帮助某人。

于 2013-03-11T09:27:26.733 回答
2

我会...

  1. tt_content使用 2 个新字段(每列一个)扩展表。您可以在 phpMyAdmin 中手动执行此操作,但是在进行数据库比较或其他操作时,您可能会冒着在安装工具中意外删除这些字段的风险。所以最好为此创建一个非常简单的扩展 - 它实际上只有 2 个文件:描述扩展的ext_emconf.php和用于定义新字段的ext_tables.sql 。

  2. typo3conf/extTables.php中定义一个新的内容元素类型(= 容器)和2 个新字段(一个用于左列,一个用于右列)每个都是IRRE类型。

  3. TCAdefaults.tt_content.pid = xxx在根页面的TypoScript 配置中设置,以便左/右列元素不存储在页面本身上,而是存储在某些 sysfolder 中。

  4. 在模板设置中定义新的内容元素,以便按照您的需要呈现。

更新

示例 IRRE 字段:

'user_2col_left' => array(
    'exclude' => 1,
    'label' => 'Left column',
    'config' => array(
        'type' => 'inline',
        'foreign_table' => 'tt_content',
        'maxitems' => '10',
        'appearance' => array(
            'collapseAll' => '1',
            'expandSingle' => '1',
            'newRecordLinkPosition' => 'bottom',
            'showAllLocalizationLink' => '1',
            'showPossibleLocalizationRecords' => '1',
            'showSynchronizationLink' => '1',
            'useSortable' => '1',
            'enabledControls' => array(
                'hide' => '0',
            ),
        ),
        'behaviour' => array(
            'disableMovingChildrenWithParent' => '1',
            'localizeChildrenAtParentLocalization' => '1',
        ),
    )
),

新内容类型示例:

t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['columns']['CType']['config']['items'][] = array(
    0 => '2 columns',
    1 => 'user_2cols',
    2 => '../fileadmin/user_2cols.gif',
);
t3lib_SpriteManager::addTcaTypeIcon('tt_content', 'user_2cols', '../fileadmin/user_2cols.gif');
$TCA['tt_content']['types']['user_2cols']['showitem'] = 'CType,header,--div--;LLL:EXT:cms/locallang_ttc.xml:tabs.access,--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.visibility;visibility,--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.access;access,--div--;LLL:EXT:cms/locallang_ttc.xml:tabs.appearance,--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.frames;frames,--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.textlayout;textlayout,--div--;LLL:EXT:cms/locallang_ttc.xml:tabs.extended';

笔记

  • 对于您的特定情况,这是一个简单(而且有点粗略)的解决方案。更好的解决方案将考虑动态设置容器中列数的可能性。

  • 使用左/右列元素会有一些限制 - 您将无法轻松移动它们或在各种容器之间复制它们。

于 2013-03-01T13:43:24.803 回答
1

这是关于如何在不使用 TemplaVoila 的情况下制作 FCE 的会议演示视频。不幸的是只有德语,但也许有帮助。

http://vimeo.com/29213790

于 2013-03-12T16:32:54.083 回答
0

我建议您尝试“多列”插件。它不像其他实现那样具有依赖关系(我已经尝试过几乎所有的 FCE 替代品)并且它具有嵌套功能.. 总体而言,它与 TYPO3 配合得很好。最近它已被移植到 TYPO3 v6。我在很多网站上使用它,我很满意。(有一些错误,比如显示错误的“丢失的元素”,但在伪造页面上有一个修复)

这是 TER 文档的链接:http: //typo3.org/extension-manuals/multicolumn/2.1.14/view/

于 2013-04-17T08:10:51.147 回答
0

尝试使用流体动力 TYPO3。使用新的预配置分发“站点”

http://typo3.org/extensions/repository/view/site

Claus Due 的截屏视频

http://vimeo.com/110469200

不要忘记添加typo3conf/AdditionalConfiguration.php 如何安装?

于 2015-02-10T16:50:42.497 回答