Jak JellyPot funguje
JellyPot byl navržen a je vyvíjen s velkou láskou a péčí designery a vývojáři pro designéry a vývojáře. Na této stránce se dozvíte více o jeho architektuře, vlastnostech a vizi.
Základní myšlenky
Základním kamenem většiny redakčních systémů jsou stránky. Takové systémy moc nezohledňují reálné potřeby vývojářů. Nabízejí řadu univerzálních šablon, jenže ty se většinou paradoxně hodí jen na něco (třeba šablony Wordpressu jsou dobré pro blogy).
Populární redakční systémy tento problém obvykle řeší systémy pluginů. Tím ale řeší následky, nikoli příčinu. Je-li systém primárně určený třeba pro tvorbu blogů, cokoli jiného mu zkrátka půjde hůř. Problém je už v samotném chápání webu jako sady stránek. Tím spíš, že dnes můžete chtít obsah webu využít třeba i v mobilní aplikaci, která žádné stránky neobsahuje.
Přiznáváme, že když v roce s vývojem JellyPot začali, zrovna o mobilních aplikacích jsme nepřemýšleli. Nic takového tenkrát ani neexistovalo. Ale zdálo se nám přirozené myslet víc na obsah než na stránky. Při vývoji JellyPot jsme si tedy dali tyto cíle:
- Správa obsahu musí být oddělená od konfigurace CMS. Nesmíme správce obsahu obtěžovat prostředím, v kterém se dají vytvářet šablony, nastavovat databáze atd.
- Vývojáři musí být svobodní ve volbě vývojového procesu. Nesmíme nutit vývojáře pracovat v nějakém konkrétním vývojovém prostředí. Nesmíme je nutit používat nějakou vybranou JavaScriptovou knihovnu, způsob psaní CSS apod. Musíme jim umožnit pracovat s nástroji, které mají rádi.
- Data musí být uložena presentation-free, tj. musí být uložena bez ohledu na to, jak budou později na webu prezentována. Jejich vzhled musí vznikat až při vykreslení stránky, ne při zadání do administrace. Tím také zařídíme to, že kontrolu nad finální podobou webu budou mít vývojáři a designéři, ne správci obsahu.
- CMS se musí přizpůsobovat datovém modelu, ne naopak. CMS tedy musí umět pojmout libovolná data v libovolné struktuře.
Obsahový model
Abychom se oprostili od modelu založeném na stránkách, jenž velmi omezuje možnosti prezentace a znovupoužití obsahu, postavili jsme JellyPot na volné definici datových struktur na míru.
Vlastní strukturované datové typy
Z elementárních datových typů jako jsou např. Text, Datum nebo Celé číslo umožňuje JellyPot sestavovat složitější struktury, přesně takové, jaké potřebujete – může to být třeba Kniha, Produkt, Testimonial, Recept atd. Protože tyto struktury nejsou svázané s žádnými konkrétními stránkami, můžete jejich obsah (nebo jeho část) použít kdekoliv na webu.
Kolekce prvků
Ze strukturovaných typů lze vytvářet kolekce, do kterých se uloží víc prvků daného typu. A samozřejmě lze vytvářet i kolekce kolekcí ;)
Vztahy mezi prvky
A nakonec je potřeba mít možnost zaznamenat vztahy mezi prvky kolekcí. Jinak by to byly jen osamocené ostrovy a šlo by namodelovat jen velmi triviální obsah. Zkrátka Knihy mají své Autory, Ćlánky bývají zařazené do Rubrik atp. Vztahy mohou být pochopitelně 1:N i M:N.
Jazyky a vícejazyčné weby
JellyPot od základu podporuje vícejazyčné weby. Jejich podpora je integrována přímo na úrovni datového modelu. Počet jazyků není nijak omezen a je možné je velmi snadno přidávat kdykoliv během vývoje nebo provozu webu. JellyPot interně pracuje v UTF-8, takže není problém používat libovolnou abecedu – od latinky až po 漢字, a to třeba i v jedné větě.
Obrázky všech velikostí a kompresí
JellyPot má nástroje pro automatické generování různých velikostí ukládaných obrázků a nabízí široké možnosti nastavení. Jde určit, jak se mají příliš velké obrázky zmenšovat, jaké mají být jejich rozměry, zda se při tom mají ořezávat či nikoliv. To se hodí jak pro responzivní weby, tak i když na jedné stránce potřebujete jen náhled a na jiné plné rozlišení.
Je možné nastavit i požadovanou úroveň komprese. Můžete tak servírovat high-res obrázky na desktopové verzi webu a menší a více komprimované na mobilních zařízeních. Tohle vše se děje automaticky, vývojáři to určí při deklaraci datového modelu a v šablonách stránek. Editoři se tím při správě obsahu nemusí nijak zabývat, prostě nahrají jeden JPEG a je to.