11

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

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

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

  • 一个图像
  • 输入字段
  • 文本区域

渲染时:

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

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

我的问题:

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

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

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

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

4

2 回答 2

24

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

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

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

从 FE 插件到 CType

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

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

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

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

\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
);

下一部分(基于此站点)是将您的插件添加到新内容元素向导中,正如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_-$_EXTKEYregisterPlugin方法中使用。

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

将 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);
于 2013-08-27T11:46:20.163 回答
4

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

于 2015-10-10T11:25:21.890 回答