LessTools
LESSCMSWizualny edytor stron z headless API LESSCOMMERCESklep, PIM i zamówienia w jednym LESSSEOWidoczność w Google, mierzona co dzień — wkrótce
Jedno konto i jedna faktura dla wszystkich. Poznaj LessTools →
← Blog
Technologia

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”

PoleTypGdzie używane
Nazwatekstwszystkie kanały
Zajawkatextareaaplikacja, newsletter, ekran
Opisrich textstrona www
Cena odtekststrona, aplikacja, strony partnerów
Zdjęcieobrazstrona, aplikacja, newsletter
Specjalistarelacjastrona, aplikacja
Kategoriaselectfiltrowanie 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

  1. Spisz wszystkie kanały i to, jakie dane każdy z nich wyświetla.
  2. Wyznacz typy treści (kolekcje) i pola, zaczynając od danych współdzielonych przez najwięcej kanałów.
  3. Ustal, kto aktualizuje każdą kolekcję i jak często.
  4. Zdecyduj, czy stronę www renderuje CMS, czy własny front zbudowany przez programistę.
  5. Sprawdź dokumentację API: zasoby, filtrowanie, języki, format odpowiedzi.
  6. Przechowuj klucz API po stronie serwera wszędzie, gdzie to możliwe, a w aplikacjach mobilnych zakładaj, że klucz jest jawny.
  7. Zaplanuj cache po stronie CDN i po stronie kanałów.
  8. 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.

cms z apitreść wielokanałowaheadlessapicache

Zbuduj taką stronę u siebie

Wizualny edytor, treść przez API i SEO w standardzie — w każdym planie.