-
Tomáš Valenta authoredTomáš Valenta authored
Maják
Maják je CMS pro Pirátské weby. Postavený je na Wagtail.
Pod pokličkou
Wagtail a Django jsou poměrně vyspělé frameworky. Vždy mysli na to, že problém co řešíš, už pravděpodobně řešil někdo před tebou. A obvykle existuje elegantní řešení.
Pár užitečných odkazů:
A za zmínku stojí Awesome Wagtail jako přehled pluginů a rozšíření pro Wagtail.
Rozšíření která používáme:
-
wagtail-metadata
- upravený template
shared/templates/wagtailmetadata/parts/tags.html
- upravený template
Struktura projektu
.
├── donate = app na web dary.pirati.cz
├── elections2021 = app na količní web k volbám 2021
├── senate = app na web senat.pirati.cz
├── senat_campaign = app na weby kandidátů na senátory
├── districts = app na web kraje.pirati.cz
├── district = app na weby oblastních sdružení
├── uniweb = app na univerzalni webove stranky
...
├── majak = Django projekt s konfigurací Majáku
├── shared = app se sdílenými static soubory a templaty pro weby
├── calendar_utils = app s modelem a utilitami na iCal kalendáře
├── tuning = app na tuning administračního rozhraní Majáku
└── users = app s custom user modelem a SSO, apod.
Poznámky k uspořádání:
- nesdílíme a nemícháme modely zděděné z
Page
mezi jednotlivými appkami a weby, abychom předešli rozbití cizího webu - části definice tříd stránek sdílíme jako mixin pattern (
shared.models.ArticleMixin
,share.models.SubpageMixin
, apod.) - sdílet se mohou obyčejné Django modely z
models.Model
, ale umístěné v nějaké appce/knihovně určené pro sdílení (shared
,calendar_utils
, apod.), nikoliv mezi weby (mezi appkami na weby by nikdy neměly vzniknout závislosti)
Konfigurace webu
Konfigurace konkrétního webu (odkazy do patičky, Matomo ID, apod.) se definuje v
kořenové xxxHomePage
webu. Je to pro uživatele snažší na správu než
Site Settings
Wagtailu pro konfigurace webů. A pro vývojáře je to skoro jedno.
Z různých podstránek webu se k té konfiguraci dostaneme přes property root_page
kterou přidává shared.models.SubpageMixin
. V xxxHomePage
webu je třeba
definovat root_page
tak, aby vedla na self
.
Styleguide
Některé weby využívají Pirátskou UI styleguide pro vzhled. Idea je, že se budou sdílet nejen statické assety (CSS, JS, ...), ale i univerzální kusy template, které se dají includovat v různých webech (patička webu, karta článku do přehledu, atp.).
Sdílené části využívané na více webech se umísťují do: