Během své přednášky na Pražském WordCampu jsem byl dotázán, proč byla pro tvorbu webu parade.com zvolena platforma založená na WordPressu, když jsme si celou frontendovou část tak trochu napsali znovu a po svém. Tento článek má být reakcí na tuto otázku, kterou jsem, jak se vyjádřil Jaroslav Polakovič, nedokázal dostatečně autoritativně zodpovědět.
Nebudu se rozepisovat o tom, že použití logic less templates (Mustache) namísto tradičního WordPress stylu mixujícího PHP s HTML (rozuměj logiku, a to někdy i docela složitou, s reprezantací dat) v rámci jednoho souboru, mělo původ především ve vizi umožit nazávislou práci „fronendistů“ a backend vývojářů v budoucnosti (platforma by se měla dále rozvíjet a s ní i tým ji spravující), ale také zpřehlednit šablonovací systém. Jak zaznělo na přednášce, v parade.com nikdy nemodifikujeme jádro WordPressu a veškeré aktualizace po řádném otestování nasazujeme a platforma nadále běží, a to i přes to, že šablony servírujeme jinak, než jak je zvykem.
Co musí online verze magazínu umět
Otázka „Proč jsme si nenapsali celou aplikaci od píky na míru našim potřebám?“ je, dle mého skromného názoru, takový trochu český způsob přemýšlení o vývoji webu. Pojďme se podívat na to, co taková aplikace pohánějící online verzi magazínu potřebuje umět (kdo znáte WordPress, odpovíte si sami na to, co zvládne a co nikoli):
- Správa uživatelů a uživatelských práv (registrace, editace profilů etc…)
- Tvorba a správa obsahu
- Různé typy obsahu (články, strukturované recepty, recenze, události … )
- Správu multimédií
- Obrázky, Videa, Zvuk …
- Komentáře
- Newsletter
- Provázání obsahu s dalšími platformami (facebook, spotify, twitter …)
- Reklamní platforma
- Statistiky
- … (další specifické funkce dle potřeb daného média)
Při vývoji, a to už platí o tvorbě jakéhokoli webu, je třeba ještě design a z něj vycházející HTML, CSS, JS.
Co musíme řešit při návrhu aplikace na zelné louce
Pokud bychom šli do tvorby takovéto platformy jen s aplikačním frameworkem (a to v případě, že realizační tým není složen z cowboyů pracujícím s čistým PHP a tvořícím framework na míru, jelikož je to tak nejlepší), čekala by nás dlouhá cesta:
- Návrh databáze
- uživatelé, obsah, kategorizace
- z technictějšího pohledu jsou zde indexy pro vyhledávání
- SQL dotazy sloužící pro výběr potřebných dat
- Návrh a tvorba hierarchie uživatelských účtů (role? práva?)
- Návrh administračního rozhraní
- na začátek je problém vybrat a implementovat WYSIWYG editor
- v neposlední řadě hovoříme o designu (přehlednost, použitelnost)
- jak budeme řešit administraci z mobilu? Vlastní androidí aplikace? (to chce to API)
- Cachování (aplikace musí být škálovatelná)
- Možnost dalšího rozvoje platformy (feature requesty a jejich snadná implementace)
A až poté (v rámci implementace, nikoli návrhu, ten s tím již musí počítat) bychom se dostali k potřebám vlastního CMS pro online magazín a specifické požadavky daného webu.
Co ve WordPressu funguje out of the box
Tím, že nasadíme WordPress dostaneme něco, co je po 5 minutové instalaci schopno běžet a pokrýt základní potřeby CMS pro online magazín
- uživatelské role
- možnost tvořit a publikovat obsah
- TinyMCE (těšíme se na verzi 4)
- správa multimédií
- oembeds
- komentáře
- …
- a v nespolední řadě také známé prostředí (kritizujte TinyMCE, návrh UI a podobně, ale lidé to znají)
Co WordPress umí ale je opomíjeno
Z pohledu vývojáře platformy za nás WordPress vyřešil spoustu problémů a to také těch, o kterých provozovatel osobního blogu s návštěvností v desítkách či stovkách denně, ani nemá tušení o jejich existenci ani o tom, že by je mohl potřebovat. S WordPressem dostaneme jaksi věnem například:
- použitelný, i když ne ideální, návrh databáze
- a že WP databáze toho snese hodně
- o SQL dotazy při vývoji na WordPressu jeden nemusí zavadit jak je rok dlouhý
- cachování
- o tomhle bych se někdy velice rád rozepsal, ale vězte, že WordPress a cache si rozumí velmi dobře i bez cachovacích pluginů (jak si myslíte, že cachovací pluginy fungují? Magie???)
- možnost rozšiřovat funkcionalitu
- svépomocí (filters, action hooks)
- pluginy (když není čas ztrácet čas, ale chce to dvakrát měřit než to tam řízneme)
- a to nehovořím o čase potřebném k zaučení dalšího vývojáře (jsem ve standardizovaném prostředí)
- AJAX
- rozšiřitelnost administračního prostředí
- …
To co na vývojáře zbude jsou poté jen specifické požadavky na funkcionalitu a i mezi nimi se najde spousta těch, pro které WordPress má již hotové řešení (jen je zapnout):
- různé typy obsahu (custom post types, post formats)
- vlastní taxonomie (a to nejen pro obsah)
- rozšiřitelnost a úprava uživatelských práv
Samozřejmě jsou věci, které si vývojářský tým musí napsat sám, ale to je třeba vždy, ať již stavím na WordPressu či nikoli.
Závěrem
Z vlastní zkušenosti platí to, co si z mé přednášky poznamenal Martin Koníček. Během 9 měsíců vývoje webu parade.com jsme byli schopni kompletně* migrovat obsah i uživatele z OpenCMS na WordPress, nasadit vlastní šablonovací systém a na něm nahodit HTML, CSS a bohatý JavaScript. Vyřešit škálovatelnost webu pro tisíce konkurentních návštěvníků a milióny shlédnutí měsíčně. To nad čím trávíme čas jsou věci, které jsou opravdu potřeba k tomu, aby web běžel, rostl a vydělával dle plánu.
* Migrace proběhla v několika vlnách a první část nového webu (obsah typu článek, kategorie, registrace uživatelů) běžely na novém systému již po půl roce práce.