Zarządzanie typami zawartości jest możliwe z pomocą panela Content-Type Builder i powinno być dostępne tylko dla osób posiadających wiedzę w tym zakresie. Należy więc to uwzględnić podczas określania uprawnień dla osób mających dostęp do CMS.
W świeżej instancji Strapi istnieje jeden zdefiniowany typ zawartości: User
Czym jest typ zawartości?
Sam typ zawartości można określić mianem modelu danych tej zawartości, czyli zbiorem informacji o tym, z jakich pól składa się ta zawartość.
Na przykład typowy artykuł informacyjny może się składać z daty publikacji, danych autora, treści, statusu (opublikowany, szkic), itd.
Zastany w Strapi v4 typ User zawiera m.in. nazwę użytkownika, email, hasło.
Dostępne rodzaje typów zawartości
Strapi w wersji 4 przychodzi z trzema standardowymi rodzajami typów zawartości: kolekcja, jednostkowy oraz komponent.
Kolekcja
Typ kolekcji pozwala na utworzenie uporządkowanej kolekcji treści tego samego typu (o tej samej strukturze zawartości).
Przykładem może być wpis na blogu. Zawsze jest ich wiele i mają taką samą strukturę treści i informacji uzupełniających.
Dostęp do elementów kolekcji jest możliwy przez punkt API, który umożliwia na pobranie całej kolekcji (z uwzględnieniem sortowania, czy limitów ilości) lub wskazanie konkretnego elementu.
Typ jednostkowy
Posiada niepowtarzalną strukturę zawartości.
Najlepszym przykładem wydaje się strona główna, którą komponujemy z różnych bloków zawartości, a jednocześnie jest ona niepowtarzalna w zakresie całego serwisu.
Dostęp jest możliwy wskazując w komunikacji z API konkretny element.
Komponent
Element wielokrotnego użytku, dostępny tylko wewnętrznie.
Może on być użyty jako pole wewnątrz typu jednostkowego, kolekcji lub innego komponentu.
Przykładem zastosowania mogą być listy składników w przepisach kulinarnych.
Dostępne pola zawartości
Strapi ma standardowo zaimplementowaną obsługę czternastu typów pól, których można użyć do skomponowania nowych typów zawartości.
Istnieje również możliwość dodania niestandardowych typów. Tu jednak się skupimy na tych pierwszych.
Text
Proste pole tekstowe jedno- lub wieloliniowe, bez możliwości formatowania tekstu.
Można go użyć np. do wprowadzania tytułu, opisu widocznego tylko dla osób zarządzających treścią.
Dostępne opcje:
- wartość domyślna
- szablon oparty na wyrażeniu regularnym
- czy pole jest wymagane do wypełnienia
- czy pole jest unikalne w skali instancji Strapi
- maksymalna ilość znaków
- minimalna ilość znaków
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
Rich text
Pole tekstowe z możliwością formatowania treści i dodawania obrazków.
Typowo pole to służy do wprowadzania treści artykułu.
Dostępne opcje:
- domyślną wartość
- czy pole jest wymagane do wypełnienia
- maksymalna ilość znaków
- minimalną ilość znaków
- czy pole jest prywatne (jeżeli tak, nie będzie dostępne przez API)
- czy ma mieć włączoną obsługę wielu języków
Number
Pole z wartością numeryczną.
Może służyć np. do wprowadzania ilości kilokalorii w przepisie kulinarnym.
Dostępne opcje:
- format
- wartość domyślna
- szablon oparty na wyrażeniu regularnym
- czy pole jest wymagane do wypełnienia
- czy pole jest unikalne w skali instancji Strapi
- maksymalna ilość znaków
- minimalna ilość znaków
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
Date
Pole daty, daty i czasu lub czasu.
Przykładowe zastosowanie to data publikacji artykułu.
Dostępne opcje:
- typ (data, data i czas, czas)
- wartość domyślna
- czy pole jest wymagane do wypełnienia
- czy pole jest unikalne w skali instancji Strapi
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
Boolean
Pole zawierające wartość „prawda” lub „fałsz”.
Może zawierać informację, czy artykuł został zatwierdzony do publikacji.
Dostępne opcje:
- wartość domyślna
- czy pole jest wymagane do wypełnienia
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
Relation
Pole relacji, które pozwala załączyć informacje z innego elementu.
Może służyć na przykład do wskazania profilu autora artykułu, który to profil jest odrębnym typem zawartości.
Dostępne opcje:
- Rodzaj relacji
- czy pole jest prywatne
Pole adresu e-mail.
Może zawierać adres do korespondencji wpisywany do profilu autora.
Dostępne opcje:
- wartość domyślna
- czy pole jest wymagane do wypełnienia
- czy pole jest unikalne w skali instancji Strapi
- maksymalna ilość znaków
- minimalna ilość znaków
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
Password
Pole hasła.
Może być użyte w dodatkowym formularzu logowania.
Dostępne opcje:
- wartość domyślna
- czy pole jest wymagane do wypełnienia
- maksymalna ilość znaków
- minimalna ilość znaków
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
Enumeration
Lista opcji, z których można wybrać jedną.
Może służyć do określenia grupy wiekowej opisywanej zabawki będącej produktem w sklepie.
Dostępne opcje:
- lista opcji
- wartość domyślna
- nadpisanie nazwy z pomocą GraphQL
- czy pole jest wymagane
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
Media
Pole pozwalające na załączenie jednego lub wielu obrazka, filmu, dokumentu, czy pliku audio.
Może przechowywać na przykład dane obrazków w galerii.
Dostępne opcje:
- pojedynczy element, czy zbiór
- typ przyjmowanych mediów
- czy pole jest wymagane
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
JSON
Pozwala na bezpośrednie wpisanie danych w formie JSON-a.
Może zawierać np. metadane strony.
Dostępne opcje:
- czy pole jest wymagane
- czy pole jest prywatne
- czy ma mieć włączoną obsługę wielu języków
UID
Pole automatycznie generujące unikalny ciąg znaków przyjazny dla URL.
Może służyć do przechowywania nazwy URL, współpracując z polem tytułu do wygenerowania ciągu znaków.
Dostępne opcje
- pole powiązane
- czy pole jest wymagane do wypełnienia
- maksymalna ilość znaków
- minimalna ilość znaków
- czy pole jest prywatne
Component
Pole pozwalające na podłączenie pojedynczego komponentu.
Dostępne opcje:
- utworzenie nowego komponentu lub wybór z istniejących
- możliwość lub brak możliwości wielokrotnego użycia komponentu
Dynamic zone
Pole pozwalające na podłączenie komponentu. Dynamiczność polega na tym, że określamy wiele dostępnych komponentów, z których można wybrać w trakcie wprowadzania treści.
Dostępne opcje:
- czy pole jest wymagane do wypełnienia
- maksymalna ilość znaków
- minimalna ilość znaków
- czy ma mieć włączoną obsługę wielu języków
Podsumowanie
Wbudowany w Strapi v4 system zarządzania typami zawartości jest w zupełności wystarczający w większości zastosowań.
Gdyby jednak dostępne opcje nie wystarczyły, istnieje możliwość doinstalowania dodatków uzupełniających – z Marketplace lub autorskich.