在TYPO3 6.x中,快速创建自定义内容元素的简便方法是什么?
一个典型的例子(也许是一组推荐书):
在后端(有足够的标签):
渲染时:
理想情况下,这些在页面模块中可用作cType,但至少在列表模块中可用。 并使用流体模板。
我的问题:
从另一个CMS我习惯于同时应用于BE和FE的内容项模板(你为它应该做的事情编写模板,然后有一个后端项目只适用于那种类型的内容元素) - 但这不是流畅的工作方式 - 或者可以做到吗?
是否有可以处理此类自定义内容元素的扩展程序(Templavoila除外)?
或者我是否必须为每种此类字段类型创建自定义extbase / fluid扩展?
顺便说一句:是否有新的extbase kickstarter的推荐教程?我被所有领域建模的东西吓跑了。
答案 0 :(得分:23)
恐吓域建模可能是您的最佳选择:)
使用FE插件创建一个扩展程序,可以根据需要保存和显示数据,因此您可以将其设置为“插入插件”。可以将此插件添加为自定义CType,我会为您找到一个示例,但稍后会发现。
注意,您不需要创建其他模型,因为您可以存储所需的数据,即。在FlexForm中。
我们假设您的密钥为hello
的扩展程序包含News
控制器,其中包含list
和single
个操作。
在ext_tables.php
您注册了一个富裕插件:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin($_EXTKEY, 'News', 'Scared Hello News');
当它工作正常时,您可以将第五个参数添加到configurePlugin
中的ext_localconf.php
方法,将其添加到内容类型列表(在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版自TYPO3 Wiki中注意到。 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
方法。
如果你觉得无聊,你可以在这里停下来;)
以上步骤将导致您的元素的TCA中没有可用的典型字段,因此您需要复制某些内容或创建自己的字段。要查看其工作原理,只需查看一些示例,请在左侧菜单的后端选择ADMIN TOOLS
&gt; Configuration
&gt; TCA
&gt; tt_content
&gt; 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';
幸运的是最简单的部分,因为您可以将其作为数组访问:
$currentTtContent = $this->configurationManager->getContentObject()->data;
$header = $currentTtContent['header'];
debug($currentTtContent);
debug($header);
答案 1 :(得分:4)
我认为http://typo3.org/extensions/repository/view/dce将完全符合我的要求