Typy zawartości w Strapi v4

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

Email

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.