CMS z API: jedna treść na stronę, aplikację i inne kanały
Ta sama cena, godziny otwarcia czy aktualność powinny wyglądać identycznie na stronie, w aplikacji i na ekranie w recepcji. Zobacz, jak CMS z API pozwala prowadzić treść w jednym miejscu, jak ją zaprojektować i o co zadbać przy wdrożeniu.
Zmieniasz cennik raz, a musisz go poprawić w czterech miejscach: na stronie, w aplikacji mobilnej, na ekranie w recepcji i w stopce newslettera. Po tygodniu każda wersja mówi coś innego. Ten problem rozwiązuje CMS z API. CMS z API to system zarządzania treścią, który oprócz edycji w panelu udostępnia zawartość przez interfejs programistyczny, dzięki czemu każda aplikacja może ją pobrać jako uporządkowane dane. Z tego poradnika dowiesz się, jakie kanały da się zasilić jedną treścią, jak ją zaprojektować do ponownego użycia i na co uważać przy wdrożeniu.
Najważniejsze w skrócie
- CMS z API przechowuje treść w jednym miejscu i udostępnia ją jako dane (najczęściej JSON), które pobiera strona, aplikacja mobilna lub ekran informacyjny.
- Treść wielokanałowa wymaga podziału na pola, takie jak tytuł, cena i zdjęcie, zamiast jednego dużego bloku sformatowanego tekstu.
- Publiczne API tylko do odczytu, zwracające wyłącznie opublikowane treści, sprawia, że klucz dostępu nie pozwala nikomu niczego zmienić.
- Cache na brzegu sieci (CDN) czyszczony przy publikacji pozwala, by odpowiedzi API były jednocześnie szybkie i aktualne.
- Przed wyborem systemu spisz kanały, typy treści i osoby, które będą je aktualizować.
Czym jest CMS z API i czym różni się od zwykłego CMS-u
Klasyczny CMS łączy treść z wyglądem: redaktor wpisuje tekst, a system od razu składa z niego stronę HTML. To wygodne, dopóki masz jeden kanał. Gdy pojawia się aplikacja mobilna albo ekran w salonie, treść „zamknięta” w szablonie strony trzeba kopiować ręcznie.
CMS z API odwraca tę logikę. Treść jest najpierw danymi, a dopiero potem stroną. Każdy kanał pyta API o potrzebne elementy, na przykład „daj mi trzy najnowsze aktualności po polsku”, i sam decyduje, jak je wyświetlić. Istnieją dwa warianty takiego systemu: czysty headless, który w ogóle nie renderuje stron, oraz model hybrydowy, w którym CMS prowadzi stronę www, a równolegle wystawia API dla innych kanałów. Szerzej o tej różnicy piszemy w artykule CMS headless a tradycyjny.
Treść wielokanałowa: jakie kanały zasilisz jednym źródłem
Najczęściej z jednej bazy treści w CMS-ie z API korzystają:
- Strona internetowa: główny kanał, zwykle z pełną treścią i SEO.
- Aplikacja mobilna: aktualności, oferta, lokalizacje, godziny otwarcia, FAQ.
- Kioski i ekrany informacyjne: menu w restauracji, rozkład zajęć, komunikaty w recepcji.
- Newsletter: szablon maila pobiera najnowsze wpisy zamiast ręcznego kopiowania.
- Strony partnerów i dystrybutorów: katalog produktów lub lista usług osadzona u partnera zawsze w aktualnej wersji.
- Narzędzia wewnętrzne: intranet, konfigurator oferty, aplikacja dla handlowców.
Nie każdy kanał potrzebuje wszystkiego. Ekran w recepcji pokaże tylko tytuł i godzinę, aplikacja wyświetli skrót, a pełny opis trafi na stronę. Właśnie dlatego tak ważny jest sposób, w jaki zaprojektujesz treść.
Jak zaprojektować treść do ponownego użycia
Najczęstszy błąd przy wdrażaniu CMS-u z API to przeniesienie nawyków ze zwykłej strony: jedno duże pole „treść”, w którym redaktor pogrubia, wstawia tabele i zdjęcia. Na stronie wygląda to dobrze, ale aplikacja mobilna czy ekran nie mają jak wyciągnąć z takiego bloku samej ceny albo samego zdjęcia.
Zasady modelowania treści pod API
- Pola zamiast bloków. Cena, czas trwania, zdjęcie i opis to osobne pola. Każdy kanał bierze tylko to, czego potrzebuje.
- Krótka i długa wersja. Zajawka do aplikacji i ekranów, pełny opis na stronę. Nie licz na automatyczne ucinanie tekstu.
- Relacje zamiast kopii. Jeśli usługa ma przypisanego specjalistę, połącz wpisy relacją, zamiast przepisywać jego dane.
- Stabilne identyfikatory. Aplikacja odwołuje się do wpisu po slugu lub ID, więc nie zmieniaj ich bez potrzeby.
- Bez formatowania „pod kanał”. Nie wpisuj w treści „kliknij przycisk po prawej”. Na ekranie w recepcji nie ma prawej strony.
- Język na poziomie pola. Każde pole ma wersję w każdym języku, więc kanał prosi o konkretny język i nie musi niczego tłumaczyć.
Przykład: kolekcja „Usługi”
| Pole | Typ | Gdzie używane |
|---|---|---|
| Nazwa | tekst | wszystkie kanały |
| Zajawka | textarea | aplikacja, newsletter, ekran |
| Opis | rich text | strona www |
| Cena od | tekst | strona, aplikacja, strony partnerów |
| Zdjęcie | obraz | strona, aplikacja, newsletter |
| Specjalista | relacja | strona, aplikacja |
| Kategoria | select | filtrowanie we wszystkich kanałach |
Więcej o projektowaniu kolekcji i pól przeczytasz w tekście Modelowanie treści: kolekcje i pola w praktyce.
Publiczne API tylko do odczytu: bezpieczeństwo klucza
Kanały takie jak aplikacja czy ekran potrzebują jedynie czytać treść. Dlatego w wielu wdrożeniach najrozsądniejsze jest publiczne API tylko do odczytu, które zwraca wyłącznie opublikowane treści. Szkice, wersje robocze i dane z panelu pozostają poza jego zasięgiem.
Taki model ma konkretne zalety:
- Nawet jeśli klucz API wycieknie z aplikacji mobilnej, nikt nie zmieni ani nie usunie treści.
- Klucz przypisany do projektu można odwołać i wygenerować nowy bez ruszania innych projektów.
- Redaktorzy pracują w panelu, a kanały wyłącznie konsumują efekt ich pracy. Nie ma ryzyka, że integracja nadpisze czyjąś edycję.
Co, jeśli kanał musi coś zapisać, na przykład zgłoszenie z formularza w aplikacji? Tu przydaje się osobny punkt wysyłki formularzy. Jeśli natomiast potrzebujesz zapisu danych przez zewnętrzny system (np. import ofert z ERP w czasie rzeczywistym), sprawdź przed wyborem, czy CMS z API w ogóle obsługuje zapis, bo wiele systemów, w tym LessCMS, udostępnia API wyłącznie do odczytu.
Cache API: szybkość i aktualność jednocześnie
Każde wywołanie API to zapytanie sieciowe. Gdy stronę odwiedza tysiąc osób, a aplikacja odświeża dane przy każdym uruchomieniu, bez cache system szybko zwalnia. Rozwiązaniem jest cache na brzegu sieci (CDN): odpowiedź trafia do serwera najbliżej użytkownika i jest serwowana stamtąd.
Klasyczny problem cache to nieaktualne dane. Dlatego warto sprawdzić, czy system czyści cache automatycznie przy publikacji, najlepiej punktowo, po tagach, a nie w całości. Wtedy zmiana ceny jednej usługi unieważnia tylko odpowiedzi, które tę usługę zawierają.
Po stronie kanałów pamiętaj o dwóch rzeczach:
- Aplikacja mobilna powinna przechowywać ostatnią pobraną wersję i pokazać ją bez internetu.
- Ekrany i kioski odświeżaj w rozsądnym rytmie, np. co kilka minut, zamiast przy każdym wyświetleniu slajdu.
Checklista wdrożenia CMS-u z API
- Spisz wszystkie kanały i to, jakie dane każdy z nich wyświetla.
- Wyznacz typy treści (kolekcje) i pola, zaczynając od danych współdzielonych przez najwięcej kanałów.
- Ustal, kto aktualizuje każdą kolekcję i jak często.
- Zdecyduj, czy stronę www renderuje CMS, czy własny front zbudowany przez programistę.
- Sprawdź dokumentację API: zasoby, filtrowanie, języki, format odpowiedzi.
- Przechowuj klucz API po stronie serwera wszędzie, gdzie to możliwe, a w aplikacjach mobilnych zakładaj, że klucz jest jawny.
- Zaplanuj cache po stronie CDN i po stronie kanałów.
- Przetestuj scenariusz: redaktor zmienia cenę i sprawdzasz, po jakim czasie widać ją w każdym kanale.
Jak to wygląda w LessCMS
LessCMS działa w dwóch trybach: może renderować całą stronę na twojej domenie (SSR) albo służyć jako samo API dla własnego frontu. W obu przypadkach ta sama treść jest dostępna dla innych kanałów.
- Publiczne API jest tylko do odczytu, zwraca wyłącznie opublikowane treści i wymaga nagłówka
x-api-key. Klucze są przypisane do projektu i można je odwołać. - API obejmuje strony, kolekcje, menu, bloki, elementy, przekierowania, sitemap, robots, konfigurację, trasy, zgodę na cookies oraz wysyłkę formularzy. Dokumentacja Swagger jest dostępna pod
/api-docs. - Strony są serwowane z brzegu sieci Cloudflare, a przy publikacji cache jest automatycznie czyszczony po tagach (Cache-Tag). Można go też wyczyścić ręcznie przyciskiem.
- Wartości pól mają wersje językowe, więc kanał pobiera treść w wybranym języku.
Przykładowy adres kolekcji wygląda tak:
https://api.lesscms.io/v1/{workspace}/{projekt}/collections/{kod}
LessCMS nie oferuje GraphQL, webhooków ani zapisu przez API. Jeśli twoje kanały głównie czytają treść, to wystarcza, a jeśli potrzebujesz dwukierunkowej synchronizacji, uwzględnij to w architekturze. Szczegóły znajdziesz na stronie API w LessCMS.
Najczęstsze pytania
Czy CMS z API to to samo co headless CMS?
Nie zawsze. Headless CMS to system, który udostępnia treść wyłącznie przez API i nie renderuje stron. CMS z API może też prowadzić klasyczną stronę www, a API traktować jako dodatkowy kanał.
Czy do korzystania z API potrzebuję programisty?
Tak, podłączenie aplikacji, ekranu czy newslettera do API wymaga pracy programisty. Redaktorzy nadal edytują treść w panelu i nie muszą wiedzieć, że trafia ona do kilku kanałów.
Czy klucz API można bezpiecznie umieścić w aplikacji mobilnej?
Przy API tylko do odczytu, zwracającym opublikowane treści, ryzyko jest ograniczone, bo klucz nie pozwala niczego zmienić. Mimo to zakładaj, że klucz w aplikacji jest jawny, i w razie nadużyć odwołaj go oraz wygeneruj nowy.
Jak szybko zmiana w CMS-ie z API pojawia się w aplikacji?
To zależy od cache po obu stronach. Jeśli CMS czyści cache CDN przy publikacji, API od razu zwraca nową wersję, a opóźnienie wynika głównie z tego, jak często aplikacja odświeża dane.
Czy przez API można wysyłać formularze?
W LessCMS tak: publiczne API obsługuje wysyłkę formularzy, a zgłoszenia trafiają do panelu i na e-mail. Pozostałe zasoby są dostępne wyłącznie do odczytu.
Chcesz sprawdzić, jak jedna treść zasila stronę i inne kanały? Załóż konto bez karty i porównaj plany w cenniku LessCMS.