DevBlog pohání WordPress. Ještě než vše zapomenu, sepíšu, proč jsem se pro něj rozhodl a jaké slasti a strasti mi to přineslo.
Když jsem vybíral CMS pro tenhle web (který zatím vypadá jen jako triviální blog, ale časem budou potřeba zajímavější vlastnosti), vycházel jsem ze dvou zásadních faktů:
- Nebudu mít čas psát si vlastní redakční systém
- Všechna hotová CMS dneška stojí za houby
S druhým bodem nemusíte souhlasit, ale moje zkušenost je zkrátka taková – na každém CMS mi něco zásadního vadí, neboli redakční systém, do kterého bych se zamiloval, jsem ještě nepotkal. Napsat si vlastní, mě dlouhodobě láká, ale zaprvé je to hodně práce a zadruhé si ani nejsem jistý, že ve všech důležitých věcech vím, jak na to (bylo by to na delší vyprávění).
Takže bylo potřeba vybrat nějaký stávající “špatný” systém. Ve světě .NETu nevzniklo nic, co by mě lákalo, u menších systémů typu Octopress (mimochodem hezký “programátorský” design) se dříve nebo později narazí na něco, co chybí, a z ostatních velkých CMSek, což jsou zhruba WordPress, Drupal a Joomla, padla volba na WordPress hlavně proto, že jsem si s Drupalem dostatečně užil na svém předchozím blogu a Joomla je principiálně podobná.
Poznámka: Hostovaná řešení typu Blogger, Posterous nebo wordpress.com jsem zvažoval, ale tam člověk narazí na limity customizace ještě dříve než u instalovaných řešení.
Takže WordPress. Používal jsem ho už někdy v roce 2005 a od doby, co jsem přešel na Drupal, jsem další vývoj moc nesledoval. Tehdy platilo, že WordPress je jednoduchý a populární systém, uvnitř ovšem kovbojsky napsaný. Myslel jsem, že se to za těch 7 let muselo změnit, ale ne, platí to pořád.
WordPress je bastl, ale velmi úspěšný bastl. To má své výhody, např.:
- Na skoro cokoliv seženete plugin (je jich snad až moc)
- Existuje nepřeberně témat vzhledu
- Pro WordPress existují komerční hostingy, Android aplikace, importéry / exportéry do jiných systémů, prvotřídní podpora v Live Writeru atd. atd.
Celkově je příslib takový, že s WordPressem i jako neodborník postavíte skoro jakýkoliv web, a ono to docela platí.
Pak ale začnete narážet na realitu, která úzce souvisí s tím, že WordPress je uvnitř jeden velký bordel. Například:
- WordPress by měl jít nainstalovat na MS SQL a skutečně tam funguje prakticky všechno, až na jednu maličkost – v současné verzi SQL dotaz nevrací příspěvky. Db abstrakce je totiž ve WordPressu spíš hack než systémové řešení.
- WordPress neřeší testovací prostředí. Tím, že je něco v souborech a něco v databázi, je sync mezi testovacím a živým prostředím komplikovaný a žádný pohodlný postup nebo plugin na to není.
- Pluginy jsou v různé kvalitě a různě kompatibilní i se setinkovými verzemi.
- Každé “téma vzhledu” je prakticky další ohromný plugin do WordPressu, obsahuje nejen šablony, ale i PHP funkce, přidává unikátní funkčnost atd. a spíše než o WordPressu by se tak mělo mluvit o WP + konkrétním vzhledu. Nepříjemným praktickým dopadem je, že některé postupy přestanou fungovat s přepnutím na jiné téma vzhledu, vůbec samotné přepnutí může způsobit řadu komplikací atd. atd.
Navzdory tomu všemu, navenek je WordPress docela hezký a příjemně použitelný software. Webová administrace je pěkná, integrace do Live Writeru špičková, skin, který vidíte, je jen trochu upravený výchozí, během pár minut jsem do WordPressu díky pluginům dostal kupu funkčnosti (Google Analytics, zálohy, antispam, Feedburner, kalendář future-postů apod.) a i do budoucna věřím, že se s dalšími customizacemi půjde poprat, i když mi asi občas budou skřípat zuby.
WordPress je zkrátka docela rozumný základ webu, ačkoliv si pořád někde vzadu říkám – to vážně v roce 2012 neexistuje pořádný CMS?
“WordPress neřeší testovací prostředí. Tím, že je něco v souborech a něco v databázi, je sync mezi testovacím a živým prostředím komplikovaný a žádný pohodlný postup nebo plugin na to není. ”
1) http://pluginbuddy.com/purchase/backupbuddy/ — zejména vhodné pro weby s větším množstvím obsahu. Placený.
2) Ručně: Stačí sync souborů a v dumpu databáze změnit všechny výskyty URI testovacího prostředí za URI cílového prostředí. Ručně to trvá pár sekund, možností, jak to naskriptovat, je taktéž nepřeberně.
Že to není pohodlné, s tím souhlasím.
Ad 2 – dump to neřeší, potřebuješ sync.
Příklad: potřebuješ otestovat nějaký nový plugin. Tak si uděláš komplet zálohu živého webu do testovacího prostředí (soubory + dump, a když nastavíš `hosts`, tak ani nemusíš měnit URL), tam si s tím pluginem nějakou chvíli hraješ, případně ho upravuješ. Za dva dny máš práci hotovou a potřebuješ aktualizovat hlavní web. Pokud v tuhle chvíli uděláš komplet náhradu živého prostředí testovacím, potenciálně jsi přišel o příspěvky, komentáře, nahrané soubory apod. za poslední dva dny.
Takže potřebuješ přenést jen změny a to je výrazně komplikovanější úloha (o něco snadnější u souborů, o něco komplikovanější u databáze).
Jak by to IMO mělo fungovat, je, že CMS počítá s tím, že něco jako testovací prostředí je, a umí v něm např. sledovat změny, které tam děláš, a pak je přehrát na živém webu v okamžiku synchronizace. Nebo by např. pomohlo, kdyby CMS vůbec nestálo nad klasickou SQL databází a sync byl vždy na úrovni souborů. Možností je více, jen bych čekal, že na toto bude CMSko myslet, protože to je poměrně důležitá věc, a když není vestavěná, špatně se nahrazuje.
Zatím jsem se nesetkal s CMSkem, které by tohle mělo dobře dořešeno.
Urcite si pozri ProcessWire – http://www.processwire.com ; Keby mal toto byt cisty blog, tak by som ho asi uplne neodporucal, ale kedze chces priniest nejake custom veci (casom), tak sa ti ich bude dorabat ovela lahsie.
Je to mlade (resp. stare, ale kratko OpenSourcovane) CMS, zalozene na tom, ze kazdy kusok data je ‘stranka’, ktora ma na zaklade nejakeho modelu zadefinovane svoje data – vraj nieco podobne ako drupal – a zaroven ma svoje miesto v jed(i)nom strome stranok. Stranky dostavas cez syntax podobnu jQuery [ napr. $pages->find(‘hodnota1>80, autor^=Roman’)].
Len poznamka: Neriesi vsetky tvoje problemy, ale niektore by mali byt vyriesitelne roznymi modulmi – nie je ich vela, ale je jednoduche si napisat vlastny (dokonca zabavne) a mozes ho vratit komunite :)
@Vebloud Já taky ne, což je s podivem vzhledem k tomu, že to nějak potřebuje řešit skoro každý web.
@Adam CMSek je milion, bohužel nejde pořádně prozkoumat a vyzkoušet všechny, ale dík za tip.
Rekl bych, ze je nejvice je znat ohromne mnozstvi pluginu. Kdyz mate na cokoli plugin, tak se pak cloveku dela lepe.. Ja osobne WordPress rad nemam, ackoli v novych verzich uz se snazi alespon o OOP, oproti treba Drupalu, ktery je postaveny na hook-systemu.