TYPO3 - 将自定义内容元素数据存储在自己的数据库表中

时间:2017-08-12 20:22:34

标签: typo3 typoscript extbase typo3-extensions typo3-8.x

我想创建自定义内容元素。我知道这基本上是如何工作的。但我问自己,是否有办法将这些元素的配置数据存储在一个像样的数据库表中?

我只知道扩展tt_content表并将数据存储在那里的方法。但是,随着元素和字段数量的增加,tt_content也将变得越来越大。我想阻止这一点。

就在您提出问题之前:我不想使用FluidTYPO3。 ;)我只想用基本的TYPO3功能来做。

5 个答案:

答案 0 :(得分:1)

在创建内容元素时,您始终需要使用数据库表tt_content。当然,将关系用于自定义记录是有意义的,例如如果你创建像tab,accordions,...等元素。

你能做的就是重复使用现有的列 - 如你所说 - 很多。因此,请重复使用headerbodytextimage等字段,...查看/sysext/frontend/Configuration/TCA/tt_content.php。好处是

  • 一个较小的表,大部分时间与性能无关
  • 精心设计的字段,包括翻译成所有语言的标签

您还可以重复使用字段及其配置,并使用overrideChildTca覆盖它。请参阅文档中的https://docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Properties/InlineOverrideChildTCa.html?highlight=overridechildtca

答案 1 :(得分:0)

不知道是否有更好的方法,但也许您可以创建没有字段定义但使用IRRE和min:1和max:1的元素 - 但这不是一个很好的方法。 更好的方法是尽可能频繁地重用tt_content中给出的字段,如果真的需要,只添加更多字段。 也许你应该看看EXT:mask和EXT:mask_export - 这两个是非常强大的工具来创建自定义内容元素(EXT:mask)并将它们导出为自己的扩展(EXT:mask_export)所以不需要这些生产中的两个扩展,但仅限于开发。

答案 2 :(得分:0)

我建议你看看typo3扩展程序mask。您可以创建自定义内容并将现有tt_content字段映射到新元素。重用标题,正文,媒体,图像字段是有意义的,因为后端预览将自动采用。

我最近用它,它的效果非常好! Here是一些可以跳入的资源(仅限德语​​)

如果您不需要在新字段上添加索引,那么用新字段炸掉tt_content并不是一个大问题。它不会对性能产生如此大的影响。

如果您需要从您的内容到某些儿童记录(手风琴,团队列表等)有新的1:N关系,只需将它们添加为inline elements(IRRE)并将该字段添加到您的{ {3}}

如果您需要一种新的数据,应该是可过滤的,可排序的等等,您应该创建一种具有自己的表结构的新记录类型,并使用extbase插件来显示该数据。

只要您只需要自定义内容,就可以扩展/重新映射tt_content。

答案 3 :(得分:0)

您可以为此使用钩子。

在您的ext_localconf.php中:

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = \Namespace\Hooks\Classname::class;

以及在“类/挂钩/类名”中:

<?php

namespace Namespace\Hooks;

use TYPO3\CMS\Core\SingletonInterface;
use TYPO3\CMS\Core\DataHandling\DataHandler;

class Classname implements SingletonInterface {

    public function processDatamap_beforeStart(&$dataHandler) {
        $datamap = &$dataHandler->datamap;
    }
}

在这里,您必须根据需要修改$ datamap。 文档在这里:https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Typo3CoreEngine/Database/Index.html

亲切的问候

答案 4 :(得分:0)

此处解释了 https://learn-typo3.com/blog/news-detail/how-to-create-custom-content-elements-on-typo3,但我更喜欢扩展和重用 tt_content 字段。