CW(0,1) - Zbudování vlastního CMS nebo spíš redakčního enginu v PHP (úvod)

Zbytečné a náročné na výpočet zpomalující prvky Joomly už mě začínaly pěkně štvát, přitom násilné okleštění Joomly se mi vlastně nepodařilo a začal jsem být myšlenkou na vytvoření vlastního redakčního systému zcela posedlý. Programování vlastního PHP/MySQL/XML webového enginu jsem promýšlel vstávaje lehaje a snad i v noci se mi o něm zdálo. Konečně jsem dospěl do fáze, kdy mi bylo jasné, že jakékoli cizí řešení redakčního systému je peklo a hledání nejlepších kompromisů mezi tím, co přesně chcete a jak to daný CMS konkrétně řeší, že s tím nebudu nikdy spokojen. 

Věděl jsem, že se potřebuju zbytečností zbavit, aby se moje website zrychlilo a co udělat šlo, to jsem udělal. Víc by šlo Joomlu okleštit jedině bezchybnou úpravou její řídící logiky, pročež jsem začal dekomponovat Joomlu jako program v PHP. Brzy mi došlo, že předělávat Joomlu je nesmysl a že si už rovnou raději udělám na motivy Joomly celý redakční systém vlastní.

Přitom vlastní řešení mi nakonec trvalo naprogramovat pouhých čtrnáct dní! To byla první fungující verze s vlastnoručně naprogramovanými asi dvaceti funkčními moduly. Tento první produkt jsem ještě půl roku zlepšoval, než nakonec pro požadavky mojí věci překonal mnou dříve skvěle vyladěnou Joomlu. 

Naprogramováním vlastního redakčního systému se stáváte bezuzdní a děláte věci do každého písmene přesně tak, jak chcete, protože při možnostech PHP lze naprogramovat úplně cokoli. Řešení dílčích podproblémů můžete pitvat do nejmenších detailů a udělat lépe než Joomla nebo je naopak vůbec neimplementovat.

Nejdříve rozčarování

Udělal jsem v čistém PHP serverovou aplikaci, která využívala služeb SQL databáze a parsování XML(HTML) dokumentů k vykreslování textového obsahu, na první pohled stejně a se všemi náležitostmi, jež jsem dříve měl u Joomly. Vždy jsem měl na paměti, že Joomla existovala už před patnácti lety a je na tomto poli jedinečnou záležitostí, bezkonkurenční špičkou na světě a že ji společným úsilím vyvíjí statisíce programátorů z komunity z celého světa. Dlouhé roky předtím jsem tento nápad zavrhoval vždy s uvědoměním, že budu-li vyvíjet něco podobného vlastního, vždy si na tom vylámu zuby, bude mi to trvat neúměrně dlouho a stejně se to na Joomlu nebude nikdy hrabat. 

Na Joomlu jsem se tedy koukal jako na modlu, zboštělou věc, dokonalý svatý grál, kterému se vlastními silami budu pouze přibližovat. Můj webový engine měl nakonec detailnější pomůcky pro automatizaci některých objemných pochodů a běžel znatelně rychleji než Joomla. A tak se mi nesčetněkrát ověřilo programátorské rčení, že převzít, pochopit a implementovat cizí řešení je mnohokrát těžší, než vytvořit vlastní.

Za důvod, proč to té statisícové komunitě tvůrců trvá přivést na svět už patnáct let, nyní považuji právě fakt, že jsou neustále znemožňováni nutností domluvy více lidí, protože není nad to, mít celý úkol se všemi krajnostmi v jediném mozku jednoho člověka! Tvůrčí kolektiv více lidí od té doby chápu jako jednoznačnou komplikaci, nutné zlo jako úlitbu umělé zaměstnatelnosti lidí, protože nejlíp by to udělal jeden schopný jedinec, který by jenom měl hodně času celý ten moloch do podrobností promyslet.

Vůdčí zjištění!

Jelikož kolem 2010 pomalu začínala přicházet doba PHP frameworků, a ty ještě nebyly brány vážně jako boilerplate základ k programování vlastního, ale spíše takový příklad, učebnice, jak podle toho vytvořit něco podobného vlastního, tak jsem pozvolna začal dekomponovat Joomlu, Yii2 framework a Codeigniter (který mimochodem stojí úplně za prd) soubor po souboru, objektu po objektu, funkci po funkci, a zjišťoval jsem, že to není zdaleka tak komplexní, jak jsem se domníval, že funkce na řešení jednoho problému v Joomle vypadají stejně jako jinde a dokonce stejně, jak bych já sám zhruba očekával! 

Joomla bez Joomly

A ta dokonalá omáčka UI&UX z ajaxu kolem, že také není nic krkolomného, ale naopak dost přímočarého! V jednom okamžiku ve mě převládl pocit, že celou Joomlu dokážu spíchnout sám. Sepsal jsem si seznam asi 20-ti funkcí, které od Joomly požaduji nejnutněji a začal jsem se nad nimi zamýšlet algoritmicky a hledáním podobných řešení jsem po pár dnech zjistil, že na to mám a že vytvořit vlastní Joomlu bez Joomly je skutečně v mé moci! Životní sen je mi najednou nadosah!

Splněný sen

Tak jsem si na to vyšetřil měsíční dovolenou od všech ostatních problémů a začal dělat na jednotlivých funkcích v PHP a SQLite. Asi za měsíc nespojité práce se mi vylouplo tolik hotových souborů dílčích řešení, kolik jsem původně zamýšlel a trvalo jen asi další týden dát to všechno dohromady do jedné velké aplikace, napozicovat a nastylovat to, obalit administrační rozhraní ajaxem. Dá se říci, že to celé zabralo 14 dní čistého času. A světe div se, mám to! Splněný sen bujarého dětství je na světě. Poučení by pro nás mělo plynout toto: Strach je vždy převlečená počáteční neznalost. Jakmile se do strašidelného problému obujete, rozpitváte ho v mysli do všech detailů, dostáváte se nad něj a stává se proti vám najednou směšně maličký.

Jste tvůrce webů nebo pouhý tvůrce obsahu?

Pokud to první, tak tvoříte celý web od prvního písmene kódu do posledního za využití všech technologií webu. Pak Vám pomohou rady k zamyšlení, jak jsem s tvorbou DC krok za krokem postupoval já.

Články jsem úmyslně nekoncipoval jako návody typu copy & paste, protože stejně budete programovat vlastní řešení a pozlatíte si ruce jak s PHP tak s SQL, dále využijete i XML / XPath a pořád budete namočeni do HTML a CSS, abyste tomu nakonec nasadili korunu vlastní grafikou. Budete mít nejspíše lokální testovací server v podobě Apache pod Linuxem pod virtuální mašinou we Windows a ponoříte se i do testování internetových protokolů. Vlastní textový obsah webu je pouhá špička ledovce a přitom bohužel to jediné, co na vás návštěvník z toho všeho ocení. Ani zdaleka si není vědom nějakého webového enginu, na kterém web běží a jehož tvorba je pro vás hlavním motivem tvorby celého webu. Bohužel.

Pokud přesně víte o co vlastně usilujete, tak se dokážete v angličtině zeptat na jakýkoli dílčí problém a k dispozici máte celý internet programátorských fór s radami, takže si vlastní řešení naprogramujete sami. Stačí se podívat na Stackoverflow.com, toho času (kolem 2020) nejpoužívanější světový server s radami kolem vývoje SW.

Ohlédnutí

Z letitého přizpůsobování CMS už znáte pojmy kolem pozadí CMS se točící, a co přesně znamenají a dělají. Takže principy jsou vám jasné, teď už je pouze zalgoritmizovat a zapsat v PHP. Takto jsem zdlouhavým zpětným inženýrstvím "vykradl" Joomlu a Yii2 framework a naprogramoval jsem si v php vlastní Joomlu bez Joomly. Ďábelsky rychlé bez žádných nadbytečných řídících struktur, které nepotřebuji. Mám tam jenom ty funkce, co potřebuji, a nic jiného. Když se ohlédnu zpět, říkám si, proč jsem to neudělal už před lety a kolik let času jsem ztratil zkoušením, porovnáváním a přetvářením různých CMS, z nichž mi vlastně ani jeden nevyhovoval.

DC home |
Portál vojenských technologií |
Ostatní články |
Organizační

Nás je málo a vždy jsme se museli přikrčit na rozdíl od Američanů a Rusů, kteří odjakživa vědí, že ohřívají světovou polívčičku.
Radkin Honzák