0

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

我只知道扩展tt_content表并将数据存储在那里的方法。但是随着元素和字段的数量越来越多,它tt_content也会变得越来越大。我想防止这种情况。

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

4

5 回答 5

1

当您创建内容元素时,您将始终需要使用数据库表tt_content。当然,使用与自定义记录的关系是有意义的,例如,如果您创建选项卡、手风琴等元素...

你可以做的是重用现有的列——正如你所说的——很多。所以重用字段,如header, bodytext, image, ... 看看/sysext/frontend/Configuration/TCA/tt_content.php. 好处是

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

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

于 2017-08-14T05:46:24.290 回答
1

我建议你看一下typo3 extension mask。您可以创建自定义内容并将现有 tt_content 字段映射到新元素。重用 header、bodytext、media、image 字段是有意义的,因为后端预览会自动采用。

我最近使用它,它真的很好用!是一些可以加入的资源(仅限德语​​)

如果您不需要在新字段上建立索引,那么用新字段炸毁 tt_content 并不是什么大问题。它不会对性能产生太大影响。

如果您需要将内容与某些子记录(手风琴、团队列表等)建立新的 1:N 关系,只需将它们添加为内联元素(IRRE) 并将字段添加到您的types-string

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

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

于 2017-08-17T06:57:45.723 回答
1

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

于 2017-08-12T21:34:13.700 回答
0

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

于 2021-02-11T18:07:21.027 回答
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

亲切的问候

于 2020-02-13T14:25:55.023 回答