Blog 26.05.2023

Typo3 v12 - nowe typy TCA

Wraz z wydaniem kolejnej wersji TYPO3 v12 w kwietniu 2023 roku, wprowadzono wiele innowacyjnych funkcji i usprawnień, które zwiększają elastyczność i wydajność tego popularnego systemu zarządzania treścią (CMS). Jednak zanim przyjrzymy się nowym typom TCA (Table Configuration Array), warto zrozumieć, że TYPO3 v12 jest kolejną wersją LTS (Long Term Support) – adaptacją, która jest oficjalnie wspierana przez dłuższy okres czasu niż wersje nie-LTS.

Wersje LTS TYPO3, takie jak aktualna v12, zapewniają użytkownikom długoterminowe wsparcie techniczne, łatki zabezpieczeń oraz regularne aktualizacje funkcjonalności. W ramach wsparcia LTS, core team TYPO3 oraz zaangażowana społeczność developerów koncentrują się na dostarczaniu poprawek błędów, łatek zabezpieczeń oraz innowacji przez określony okres czasu, często obejmujący kilka lat. Tak długie wsparcie ma na celu zapewnienie stabilnej i bezpiecznej platformy dla użytkowników TYPO3, zwłaszcza dla przedsiębiorstw i organizacji, które polegają na długoterminowym rozwoju swoich stron internetowych opartych na TYPO3. 

Aktualnie, wersja LTS TYPO3 v11 jest wspierana do września 2024 roku, podczas gdy TYPO3 v12, jako nowa wersja LTS, będzie otrzymywać wsparcie techniczne aż do kwietnia 2026 roku. To ważne informacje dla użytkowników, którzy zastanawiają się nad migracją na najnowszą wersję TYPO3, ponieważ korzystanie z wersji LTS zapewnia pewność, że otrzymają nie tylko rozszerzone wsparcie, ale również dostęp do najnowszych funkcji i usprawnień systemu.

TYPO3 TCA (Table Configuration Array)

TYPO3 TCA (Table Configuration Array) to jedna z głównych części TYPO3, która pełni kluczową rolę w definiowaniu struktury i konfiguracji tabel bazy danych w systemie TYPO3. TCA pozwala na precyzyjne określanie pól, relacji, walidacji i innych atrybutów tabel, które są wykorzystywane w procesie tworzenia i zarządzania treściami w TYPO3.

Główne zadania TYPO3 TCA obejmują:

Definiowanie pól: TCA umożliwia szczegółowe definiowanie różnych typów pól, takich jak pola tekstowe, pola wyboru, pola wielokrotnego wyboru, pola związane z datą itp. Ponadto, można również zdefiniować niestandardowe typy pól, co pozwala na elastyczne dostosowanie struktury danych.

Konfiguracja relacji: TCA pozwala na definiowanie relacji między tabelami, takich jak relacje jeden do wielu, wiele do wielu itp. Dzięki temu, możliwe jest tworzenie powiązanych rekordów i mapowanie zależności między nimi. Umożliwia bardziej złożone i rozbudowane struktury danych w systemie TYPO3.

  1. Walidacja danych: TCA umożliwia definiowanie reguł walidacji dla pól, takich jak wymagane pola, unikalność wartości, sprawdzanie poprawności formatu itp. Dzięki temu, administratorzy i użytkownicy mogą mieć pewność, że dane wprowadzane do systemu są poprawne i spójne.
  2. Konfiguracja interfejsu użytkownika: TCA umożliwia również konfigurację wyglądu i funkcjonalności interfejsu użytkownika dla edycji rekordów. Administratorzy mogą definiować pola tylko do odczytu, ukrywać pola w zależności od warunków, dodawać niestandardowe elementy interfejsu użytkownika itp. Dzięki temu, interfejs użytkownika jest dostosowany do specyficznych wymagań i potrzeb aplikacji opartych na TYPO3.

TCA jest jednym z kluczowych elementów TYPO3, który umożliwia elastyczne zarządzanie strukturą danych i interfejsem użytkownika w systemie. Jest szeroko wykorzystywany w rozwoju rozszerzeń TYPO3 oraz w konfiguracji stron i aplikacji internetowych opartych na tym potężnym systemie zarządzania treścią. Dzięki TCA, administratorzy mogą tworzyć zaawansowane i spersonalizowane rozwiązania, które spełniają unikalne potrzeby ich projektów opartych na TYPO3.

Nowe typy TCA w Typo3 v11

Nowe typy TCA w TYPO3 v11, takie jak Language i Category, wprowadzają dodatkowe możliwości konfiguracji i zarządzania danymi w systemie.

TYPE “Langauge” - został poddany uproszczeniom w konfiguracji, co przyczynia się do łatwiejszego i bardziej intuicyjnego ustawiania języków. Jedną z głównych zalet tego typu jest to, że pobiera wszystkie konfiguracje językowe z "Site Configuration". Dzięki temu, administratorzy mogą skonfigurować dostępne języki w jednym miejscu, co przyczynia się do zwiększenia efektywności i spójności w zarządzaniu wielojęzycznymi witrynami opartymi na TYPO3. 

PHP
Copied!
'columns' => [
	'sys_language_uid' => [
		'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
		'config' => [
			'type' => 'language',
		],
	],
],

w starszych wydaniach TYPO3 było to robione w następujący sposób:

PHP
Copied!
'sys_language_uid' => [
            'exclude' => true,
            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
            'config' => [
                'type' => 'select',
                'renderType' => 'selectSingle',
                'special' => 'languages',
                'items' => [
                    [
                        'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
                        -1,
                        'flags-multiple'
                    ],
                ],
                'default' => 0,
            ]
        ],

Types Category

PHP
Copied!
'columns' => [
	'categories' => [
		'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.category',
		'config' => [
			'type' => 'category',
		 // 'relationship' => 'manyToMany' | 'oneToMany' | 'oneToOne'
		],
	],
],

W przypadku tego typu, mamy do dyspozycji kilka opcji konfiguracyjnych:

  1. oneToMany - ta opcja umożliwia wybór wielu kategorii. Wybrane identyfikatory (UID) kategorii są oddzielone przecinkami, co pozwala na przypisanie jednego rekordu do wielu kategorii.
  2. oneToOne - ta opcja pozwala na przechowywanie identyfikatora (UID) wybranej kategorii w polu bazy danych. Dzięki temu, możliwe jest ustanowienie jednoznacznej relacji między rekordem a konkretną kategorią.

Nowe typy TCA w Typo3 v12

Nowe typy TCA w TYPO3 v12 wprowadzają jeszcze więcej możliwości konfiguracyjnych i ułatwień w zarządzaniu danymi. Poniżej przedstawiamy kolejne typy TCA dostępne w TYPO3 v12:

1. Password 
Zamiast korzystać z typu input i ustawień eval='trim,password,saltedPassword', w TYPO3 v12 możemy teraz skorzystać z nowego typu TCA, który jest dedykowany do pól hasłowych. Ta zmiana ułatwia konfigurację pól haseł i zapewnia większe bezpieczeństwo.

PHP
Copied!
'columns' => [
  'password' => [
    'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_tca.xlf:password',
    'config' => [
    	'type' => 'password',
    ],
  ],
],

2. TCA Type Link
W starszych wersjach TYPO3 można było skorzystać z konfiguracji renderType => inputLink do obsługi pól linków. W TYPO3 v12 korzystamy z nowej konfiguracji. Ta aktualizacja umożliwia łatwiejsze zarządzanie linkami i dostosowanie ich wyglądu w interfejsie użytkownika.

PHP
Copied!
'columns' => [
	'link' => [
		'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_tca.xlf:link',
		'config' => [
			'type' => 'link',
			'allowedTypes' => ['page', 'url', 'record'],
			'appearance' => [
			 // 'enableBrowser' => false,
				'allowedFileExtensions' => ['jpg', 'png'],
				'allowedOptions' => ['*'],
			],
		],
	],
],

3. Type Numer 
W poprzednich wersjach , aby zdefiniować pola numeryczne, korzystano z ustawień 'evel' => int or double2. W TYPO3 v12 wprowadzono dedykowany typ TCA dla pól numerycznych. Ta zmiana ułatwia i upraszcza konfigurację pól liczbowych.

PHP
Copied!
'columns' => [
	'number' => [
		'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_tca.xlf:number',
		'config' => [
			'type' => 'number',
		 // 'format' => 'decimal'
			'range' => [
            	'lower' => 1,
            	'upper' => 100
			],
		]
	],
],

4. Type Email 
Poprzednio, aby zdefiniować pola emailowe, należało użyć type = input i ustawień evel = email. W TYPO3 v12 można to zrobić znacznie łatwiej dzięki dedykowanemu typowi TCA dla pól emailowych:

PHP
Copied!
'columns' => [
	'email' => [
		'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_tca.xlf:email',
		'config' => [
			'type' => 'email',
		],
	],
],

5. Type Color 
W starszych wersjach TYPO3 korzystano z type=input i renderType=colorpicker. W TYPO3 v 12 robimy to dużo łatwiej poprzez:

PHP
Copied!
'columns' => [
	'color' => [
		'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_tca.xlf:color',
		'config' => [
			'type' => 'color',
		 // 'nullable' => true,
			'valuePicker' => [
            	'items' => [
        	        ['typo3 orange', '#FF8700'],
    	        ],
	        ],
      	],
	],
],

6. Type Folder 
W poprzednich wersjach TYPO3, aby zdefiniować pole reprezentujące folder, korzystano z ustawienia internal_type => folder. W TYPO3 v12 ta konfiguracja została zmieniona, umożliwiając bardziej intuicyjne i łatwe tworzenie pól folderowych:

PHP
Copied!
'columns' => [
	'folder' => [
		'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_tca.xlf:folder',
		'config' => [
			'type' => 'folder',
			'elementBrowserEntryPoints' => [
				'_default' => '1:/my_folder/'
			 // '_default' => '###PAGE_TSCONFIG_ID###'
			 // 'hideMoveIcons' => false | true
          	],
      	],
	],
],

7. Ciekawym nowym typem TCA jest JSON, który pozwala na przechowywanie danych w formacie JSON. Ten typ jest szczególnie przydatny, gdy potrzebujemy przechowywać i zarządzać złożonymi strukturami danych w polu TCA.

PHP
Copied!
'columns' => [
	'json' => [
		'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_tca.xlf:json',
		'config' => [
			'type' => 'json',
		//  'enableCodeEditor' => false,
		//  'readonly' => true,
      	],
	],
],

8. Ostatnim nowym typem jest UUID, który umożliwia generowanie unikalnych identyfikatorów. Ten typ jest przydatny, gdy potrzebujemy zapewnić unikalność wartości w polu TCA.

Wprowadzenie tych nowych typów TCA w TYPO3 v12 umożliwia programistom i administratorom jeszcze większą elastyczność i wygodę w konfiguracji struktury danych. Nowe typy ułatwiają zarządzanie danymi w systemie, umożliwiają bardziej zaawansowane walidacje i oferują bardziej intuicyjne interfejsy użytkownika. Dzięki temu TYPO3 v12 staje się jeszcze bardziej rozbudowanym i wszechstronnym narzędziem do tworzenia zaawansowanych stron internetowych i aplikacji.

PHP
Copied!
'columns' => [
	'uuid' => [
		'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_tca.xlf:uuid',
		'config' => [
			'type' => 'uuid',
		    'version' => 7,
		//  'enableCopyToClipboard' => true,
      	],
	],
],

Przejście na najnowszą wersję Typo3 v12 przynosi wiele korzyści. Otrzymujesz dostęp do nowych funkcji, ulepszeń wydajnościowych i poprawek bezpieczeństwa. Należy pamiętać jednak, że kluczowym elementem utrzymania witryny w pełni funkcjonalnej i zgodnej z najnowszymi standardami są aktualizacje Typo3. Upgrade Typo3 zapewnia lepszą obsługę nowych technologii i rozszerzeń, co pozwala na tworzenie jeszcze bardziej zaawansowanych i interaktywnych witryny.

Nasz doświadczony zespół jest gotowy, aby pomóc Ci w procesie aktualizacji Typo3, zapewniając wsparcie techniczne i sprawne przejście na nową wersję. Niezwłocznie skorzystaj z możliwości aktualizacji Typo3, aby cieszyć się wszystkimi korzyściami, jakie niesie ze sobą Typo3 v12.

O autorze
Krzysztof Napora
Krzysztof Napora
Krzysztof Napora