【问题标题】:How to quickly create custom content elements in TYPO3 6.x如何在 TYPO3 6.x 中快速创建自定义内容元素
【发布时间】:2013-08-30 03:17:03
【问题描述】:

在 TYPO3 6.x 中,快速创建自定义内容元素的简单方法是什么?

一个典型的例子(也许是推荐的集合):

在后端(有足够的标签):

  • 一张图片
  • 输入字段
  • 文本区域

渲染时:

  • 图像大小调整为 xy
  • 输入封装在 h2 中
  • textarea 通过 parseFunc 并包裹在更多标记中

理想情况下,这些将在页面模块中作为 cType 可用,但至少在列表模块中。 并使用流体模板。

我的问题:

  • 在另一个 CMS 中,我习惯于同时将内容项模板应用于 BE 和 FE(您编写模板以了解它应该做什么,然后有一个后端项仅适用于该类型内容元素)-但这不是流体的工作方式-或者可以做到吗?

  • 是否有可以处理此类自定义内容元素的扩展程序(Templavoila 除外)?

  • 或者我是否必须为每个此类字段类型创建自定义 extbase/fluid 扩展?

  • 顺便问一下:有没有推荐的新 extbase kickstarter 教程?我被所有领域建模的东西吓跑了。

【问题讨论】:

    标签: templates typo3 fluid


    【解决方案1】:

    那些可怕的领域建模东西可能是你的最佳选择:)

    使用 FE 插件创建一个扩展,它可以根据需要保存和显示数据,因此您可以将其放置为“插入插件”。可以将此插件添加为自定义 CType,我会为您找到一个示例,但稍后会。

    请注意,您无需创建其他模型,因为您可以存储所需的数据,即。在 FlexForm 中。

    从 FE 插件到 CType

    假设您有一个带有键 hello 的扩展,其中包含带有 listsingle 操作的 News 控制器。

    在你的ext_tables.php你已经注册了一个FE插件:

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin($_EXTKEY, 'News', 'Scared Hello News');
    

    当它工作正常时,您只需将第五个参数添加到 ext_localconf.php 中的 configurePlugin 方法即可将其添加到内容类型列表(在 TCA 中可用):

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'TYPO3.' . $_EXTKEY,
        'News',
        array('News' => 'list, show'),
        array('News' => ''),
        \TYPO3\CMS\Extbase\Utility\ExtensionUtility::PLUGIN_TYPE_CONTENT_ELEMENT // <- this one
    );
    

    下一部分(基于this site)是将您的插件添加到新内容元素向导,正如TYPO3 Wiki 自TYPO3 版本以来所注意到的那样。 6.0.0 做了一点改动,所以最简单的方法是在 ext_tables.php 中添加类似这样的内容:

    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:hello/Configuration/TypoScript/pageTsConfig.ts">');
    

    并在/typo3conf/ext/hello/Configuration/TypoScript/pageTsConfig.ts 文件中写入添加:

    mod.wizards.newContentElement.wizardItems.plugins.elements.tx_hello_news {
        icon = gfx/c_wiz/regular_text.gif
        title = Scared Hello News
        description = Displays Scared News
        tt_content_defValues.CType = hello_news
    }
    
    # Below the same for TemplaVoila
    templavoila.wizards.newContentElement.wizardItems.plugins.elements.tx_hello_news {
        icon = gfx/c_wiz/regular_text.gif
        title = Scared Hello News
        description = Displays Scared News
        tt_content_defValues.CType = hello_news
    }
    

    请注意,正确的键 tx_hello_news 应该是小写的 tx_$_EXTKEY 和插件名称的组合 - 在 registerPlugin 方法中使用。

    如果你觉得无聊,你可以在这里停下来;)

    将 tt_content 的字段带回您的 CType

    以上步骤将导致 TCA 中没有可用于您的元素的典型字段,因此您需要复制某些内容或创建自己的内容。要了解它是如何工作的,只需查看一些示例,在左侧菜单的后端选择 ADMIN TOOLS > Configuration > TCA > tt_content > types

    您会在此找到系统中的所有类型,选择最需要的并将其[showitem] 节点复制到您自己的节点中。再次在 ext_tables.php 添加这个 PHP 数组:

    $TCA['tt_content']['types']['hello_news']['showitem'] = $TCA['tt_content']['types']['textpic']['showitem'];
    

    再次声明:hello_news 是小写的 $_EXTKEY 和 FE 插件名称的组合...

    当然,如果需要,您可以编写完全自己的字段集,一个一个地自定义字符串:

    $TCA['tt_content']['types']['hello_news']['showitem'] = '--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.general;general, --palette--;LLL:EXT:cms/locallang_ttc.xml:palette.header;header';
    

    访问 Extbase 控制器中的字段:

    幸运的是,这是最简单的部分,因为您可以将其作为数组访问:

    $currentTtContent = $this->configurationManager->getContentObject()->data;
    $header = $currentTtContent['header'];
    debug($currentTtContent);
    debug($header);
    

    【讨论】:

    • 酷,我已经被 Mittwald 的精彩介绍(德语)吓到了:mittwald.de/fileadmin/downloads/pdf/dokus/…
    • 我已经创建了一个非常简单的列表扩展(仅列表视图),它肯定比旧的 kickstarter 快。我对自定义 CType 示例非常感兴趣。
    • 哇 - 非常感谢 - 这需要一些时间来处理 - 太棒了:-)
    • 嗨@biesior 它确实需要一些时间来尝试这个。我可以创建插件并将其添加到向导中。但我还不明白“将 tt_content 的字段带回您的 CType”是什么意思。我认为这会以某种方式将我为扩展项目定义的字段(可以通过列表视图编辑)带回 tt_content 区域,这正是我正在寻找的。但是您的解决方案有所不同,还是我错了?
    • 要更新此线程:还可以查看 Daniel 在 usetypo3.com/custom-fsc-element.html 上的演练
    【解决方案2】:

    我认为http://typo3.org/extensions/repository/view/dce 将完全符合我的要求

    【讨论】:

    • DCE 内容不能以我正在寻找的方式在整个站点中重复使用。 typo3.org/extensions/repository/view/mask 是更灵活的竞争对手——添加或重用您可以使用 TypoScript 或之后查询的数据库字段
    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 2021-12-26
    • 2020-01-27
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    相关资源
    最近更新 更多