首页 文章

如何在TYPO3 6.x中快速创建自定义内容元素

提问于
浏览
10

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

一个典型的例子(也许是一组推荐书):

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

  • 图像

  • 输入字段

  • 一个textarea

渲染时:

  • 图像已调整为xy

  • 输入包含在h2中

  • textarea通过parseFunc传递并包含更多标记

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

我的问题:

  • 从另一个CMS我习惯于同时应用于BE和FE的内容项模板(你为它应该做的事情编写模板,然后只有那种内容元素的后端项) - 但是这不是流动的工作方式 - 还是可以做到的?

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

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

  • 顺便说一句:是否有一个推荐的新extbase kickstarter教程?我被所有领域建模的东西吓跑了 .

2 回答

  • 23

    那个惊吓域名建模的东西可能是最好的选择:)

    使用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)将您的插件添加到 New Content Element Wizard ,因为TYPO3版本在TYPO3 Wiki中注意到 . 6.0.0改变了一点,所以最简单的方法是在你的_1263469中添加这样的东西:

    \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 Controller中的字段:

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

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

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

相关问题