Themes
🔧 1. Struktura motywu
Motyw to po prostu katalog w:
/user/themes/moj-theme/
Minimalna struktura:
moj-theme/
├── templates/
│ ├── default.html.twig
│ └── partials/
├── css/
├── js/
├── moj-theme.yaml
└── blueprints.yaml
📄 2. Plik konfiguracyjny motywu
'my-theme.yaml`
enabled: true
⚙️ 3. Blueprint (opcjonalny, ale warto)
blueprints.yaml
Dzięki temu motyw pojawi się w panelu admina:
name: Moj Theme
version: 1.0.0
description: Mój własny motyw Grav
icon: rebel
🧠 4. Najważniejsze – Twig (template)
templates/default.html.twig
To jest Twój główny layout:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{ page.title }}</title>
</head>
<body>
<h1>{{ page.title }}</h1>
<div>
{{ page.content|raw }}
</div>
</body>
</html>
To już działa jako prosty motyw.
🧩 5. Partiale (czyli Twoje komentarze 😉)
Skoro już bawiłeś się w:
{{ include('partials/comments_form.html.twig') }}
to robisz:
templates/partials/comments_form.html.twig
I masz pełną kontrolę.
🎯 6. Włączenie motywu
W pliku:
/user/config/system.yaml
ustaw:
pages:
theme: moj-theme
🚀 7. Najprostszy sposób (polecam)
Nie zaczynaj od zera — skopiuj gotowy motyw, np.:
- Antimatter (domyślny)
- Quark (nowszy)
i przerób:
/user/themes/quark → /user/themes/moj-theme
Usuń zbędne rzeczy i upraszczaj.
To jest najlepsza metoda nauki Grav.
🧠 Kilka ważnych rzeczy (praktyka)
🔹 Layout dziedziczenia (ważne!)
Grav używa Twig inheritance:
{% extends 'partials/base.html.twig' %}
Czyli:
- base.html.twig → główny layout
- inne template'y → rozszerzają go
🔹 Debugowanie
Włącz w system.yaml:
debugger:
enabled: true
I używaj:
{{ dump(page) }}
🔹 Nazwy template’ów
Plik: blog.html.twig
→ używany przez stronę:
template: blog
💡 Pro tip (ważny przy Twoim przypadku)
Skoro masz problemy z:
- formularzami
- komentarzami
- include vs funkcje
to własny motyw daje Ci:
✔ pełną kontrolę nad HTML
✔ brak „magii” pluginów
✔ łatwiejsze debugowanie
❗ Czy to trudne?
Nie.
Największe trudności to:
- struktura Grav (pages vs templates)
- Twig (ale to już ogarniasz)
- zależności pluginów