Wagtail CMS
Prezentace o open-source CMS Wagtail: instalace, vytvoření prvního webu, vlastnosti a možnosti. Wagtail dnes používají NASA, Google, Mozilla i britská státní správa.
Co je redakční systém (CMS)
Redakční systém je software, který umožňuje uživatelům bez znalosti programování vytvářet, upravovat a publikovat digitální obsah – zejména webové stránky. Klíčem je oddělení obsahu od prezentace: redaktoři pracují v přívětivém rozhraní, šablony a kód spravují vývojáři.
Co je Wagtail
Wagtail je open-source CMS napsaný v Pythonu a postavený nad webovým frameworkem Django. Vyvinula ho britská agentura Torchbox v roce 2014 a dnes ho používají NASA, Google, Mozilla, NHS nebo British Council. Licence je MIT – tedy zdarma i pro komerční použití.
Klíčové vlastnosti
Mezi nejdůležitější vlastnosti patří:
- StreamField – flexibilní bloky pro skládání obsahu
- Vestavěná knihovna obrázků s automatickým generováním variant
- Plná podpora vícejazyčnosti
- Fulltextové vyhledávání
- Schvalovací workflow a verzování stránek
- REST a GraphQL API z krabice
Instalace krok za krokem
Instalace zabere pár minut. Postup je následující:
# 1) Virtuální prostředí Pythonu
python -m venv venv
source venv/bin/activate
# 2) Instalace Wagtailu
pip install wagtail
# 3) Nový projekt
wagtail start mojeweb
cd mojeweb
pip install -r requirements.txt
# 4) Migrace databáze a vytvoření admina
python manage.py migrate
python manage.py createsuperuser
# 5) Spuštění vývojového serveru
python manage.py runserver
Vytvoření prvního obsahu – Page model
Každý typ stránky je v Wagtailu definován jako Python třída dědící z Page. Pole stránky jsou definovaná jako atributy modelu.
from wagtail.models import Page
from wagtail.fields import RichTextField
from wagtail.admin.panels import FieldPanel
class BlogPage(Page):
intro = RichTextField(blank=True)
body = RichTextField()
content_panels = Page.content_panels + [
FieldPanel('intro'),
FieldPanel('body'),
]
Šablona pro stránku
Šablona se uloží podle názvu třídy v snake_case podobě – tedy například blog/blog_page.html.
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% block content %}
<h1>{{ page.title }}</h1>
<div class="intro">{{ page.intro|richtext }}</div>
<div class="body">{{ page.body|richtext }}</div>
{% endblock %}
StreamField – flexibilní obsah
StreamField je speciální pole, v němž redaktor řadí libovolné bloky obsahu – odstavec, obrázek, citát, video, kód, vlastní komponentu – v libovolném pořadí a počtu. Konec rigidních šablon!
Výhody a nevýhody
Výhody: open-source MIT licence, vyzrálé Django prostředí, maximální flexibilita, REST + GraphQL API, skvělý vývojářský zážitek.
Nevýhody: vyžaduje znalost Pythonu a Djanga, vyšší vstupní práh než WordPress, méně hotových šablon, hosting složitější než u PHP.
Užitečné odkazy
wagtail.org – oficiální web
docs.wagtail.org – dokumentace
github.com/wagtail/wagtail – zdrojový kód
madewithwagtail.org – galerie webů