Framework v doslovnom preklade znamená kostra,rámec, štruktúra, ale my budeme pre opisnejší význam používať pôvodný termín framework.
Ten, kto už vyvíjal nejakú tú tému pre WordPress, určite vie, že možnosti tejto platformy sú naozaj široké. Nie vždy je vhodné všetko, čo WordPress dokáže, integrovať do každej témy. Na druhej strane je vždy veľmi nápomocné, keď nami požadované rozšírenie môžeme v prípade potreby pridať len jednoduchou funkciou. Dokonca to platí aj v prípade, keď bola vaša téma vyvíjaná pre staršiu verziu WordPress a vy by ste radi pridali funkcionalitu predstavenú v novej verzii, na ktorú ste práve aktualizovali, pričom jej integrácia nebola pôvodne vôbec v pláne. Práve tu prichádza na scénu framework ako základná kostra vašich tém.
Obsah
Čo to ten framework vlastne je?
Hneď na úvod by som chcel podotknúť, že pojem framework v tomto prípade nepredstavuje klasický MVC (Model View Controller) framework, ktorý je charakteristický pre niektoré programovacie jazyky. Môžete si to predstaviť ako určitý rámec, ktorý využijete na vývoj vašej témy. Je to súbor pomocných funkcií, ktoré tvorbu WordPress témy urýchlia a uľahčia, ale aj posunú na pokročilejšiu úroveň. Môžu to byť funkcie, ktoré aktivujú rozšírenia na pokročilejšie zobrazovanie miniatúr obrázkov, či vytvorenie detailnejších SEO nastavení pre vaše články, alebo pridanie elegantnejšieho stránkovania, ako aj mnoho ďalších. Je len na vás, ako túto elegantnú šablónu použijete a akým smerom ju rozviniete. Na frameworku môžete postaviť stovky tém a aj tak každá môže byť úplne iná a určená k inému účelu a každá má potenciál byť základom pre ďalšie odvodené témy. Ich správa a údržba bude pritom pre vás oveľa jednoduchšia, lebo budú postavené na rovnakom základe. Dobrým príkladom frameworku je Hybrid Core alebo Carrington Core.
Ako framework funguje?
- framework je súbor funkcií a tried nachádzajúcich sa väčšinou v jednom hlavnom adresári (ktorý môže obsahovať pre prehľadnosť ďalšie podadresáre)
- vývojári vložia tento adresár do adresára svojej (nadradenej) témy a načítajú funkcie a triedy frameworku, aby ich bolo možné používať
- toto funkčné jadro umožní postaviť pokročilú nadradenú tému, pre ktorú je následne možné vytvárať odvodené témy s vlastným prispôsobeným vzhľadom a funkcionalitou
- pomocou WordPress funkcií, ako add_theme_support() ako aj rôznymi inými charakteristickými pre daný framework, aktivujeme v našej téme podporu pre rozličné špecifické vlastnosti a rozšírenia.
Framework->Nadradená téma->Odvodená téma
Funkciu a využitie frameworku sme si ako tak vysvetlili, ale okrem toho sa nám tu vyskytujú aj pojmy nadradená téma a odvodená téma. Pokúsim sa vám v skratke vysvetliť, čo tieto pojmy predstavujú a aký je medzi nimi vzťah.
Nadradená téma ( Parent theme )
Takmer každá WordPress téma má v dnešnej dobe potenciál stať sa nadradenou témou, pretože sa ňou v zjednodušenom poňatí môže stať pridaním jednej funkcie a tým pádom byť využívaná odvodenými témami. Za príklad nám môže slúžiť aj súčasná základná WordPress téma TwentyTen, ktorá je tiež nadradenou témou. Nadradená téma môže, ale nemusí využívať framework ako svoj základný kameň, záleží len od programátora ako svoju nadradenú tému navrhne. Niektoré nadradené témy sú naozaj veľmi pokročilé a často sú sami označované za frameworky. Toto označenie ale nie je správne, pretože stále plnia funkciu nadradenej témy, a teda nemôžu byť ako súbor knižníc vložené do inej témy, čím sa vymykajú našemu konceptu frameworku.
Nadradená téma v sebe v podstate nesie základný strohý dizajn, funkcionalitu a šablóny stránok (index.php, comments.php, 404.php, page.php…), aby mohla byť načítaná WordPressom. Je to akoby veľmi minimalistická téma, ktorá ale v sebe skrýva veľký potenciál, aby bola formovaná pomocou odvodených tém. Treba ešte podotknúť, že takáto nadradená téma funguje aj sama o sebe. Je možné ju normálne aktivovať ako každú inú tému, no jej dizajn a štruktúra je naozaj veľmi jednoduchá. Na rozdiel od frameworku, ktorý ani náhodou nie je WordPress témou, ale ako sme už spomínali, iba akýsi zhluk funkcií a tried na vybudovanie témy a nespĺňa základné štrukturálne požiadavky témy. Takže ak adresár frameworku vložíte do adresára s témami, tak sa vám v ovládacom panely zobrazí ako poškodená téma. Podobne to máme aj pri odvodených témach, lebo tie zas potrebujú na svoju funkčnosť prislúchajúcu nadradenú tému, z čoho vyplýva, že sami o sebe sú tiež nepoužiteľné.
Odvodená téma ( Child theme)
Tento typ témy ďalej rozvíja a formuje príslušnú nadradenú tému. Pomocou daných špeciálnych funkcií pre akcie a filtre a tiež prostredníctvom ďalších vlastných funkcií dokáže upravovať a dopĺňať napríklad vzhľad, rozmiestnenie stránky, alebo pridávať nové prvky. Pri použití odvodenej témy je potrebné mať v adresári s témami (wp-content/themes) nadradenú tému ako aj odvodenú tému, pričom aktivujeme len odvodenú tému. Vytvorenie odvodenej témy je naozaj jednoduché. Stačí vytvoriť správne upravený súbor style.css a vložiť ho do adresára. Takto aj pri základnej znalosti CSS a (x)HTML dokážete upraviť takmer každú nadradenú tému podľa vašich predstáv bez toho, aby ste priamo zasahovali do jej štruktúry.
Matt Mullenweg (zakladateľ WordPress) sa k používaniu odvodených tém vyjadril takto:
“Child themes are the only way you should build your WordPress site on top of a framework … ,”
Vo voľnom preklade by to znelo asi takto: „Jediný spôsob ako by ste mali stavať WordPress stránku sú odvodené témy založené na frameworku…“
Diagram znázorňujúci vzťahy medzi jednotlivými krokmi pri vývoji témy:
Výhody používania frameworku a nadradených tém
- Model (framework->)nadradená téma->odvodená téma je bezpečnejší
- neupravuje sa priamo kód nadradenej témy alebo frameworku, takže nemôžete v podstate nič pokaziť
- kód je stabilnejší, čistejší a robustnejší
- aktualizujú sa len súbory frameworku a nadradenej témy, takže vami vykonané zmeny ostanú vždy zachované a nemôže sa stať, že sa pri aktualizácii stratia
- práca s kódom je oveľa prehľadnejšia a čistejšia, čo pomáha aj lepšiemu SEO
- tým, že odvodená téma obsahuje iba kód, ktorý ste vy sami pridali, máte oveľa väčší prehľad o tom, čo ste kde zmenili a nemáte problém to nejak upraviť alebo pridávať nové veci na vami požadované miesta
- odvodená téma si dokáže ľahko adaptovať všetky výhody a možnosti nadradenej témy, ako je napríklad SEO
- vďaka frameworku a nadradenej téme je zabezpečená kompatibilita pri aktualizácii jednotlivých modulov alebo samotného WordPress
- taktiež máte pod kontrolou prípadné problémy s modulmi
- stačí vám zálohovať odvodenú tému, ktorá je podstatne menej objemná, pretože nemusí obsahovať všetky deklarácie funkcií a tried
- odvodené témy vám umožnia jednoducho vytvoriť dočasný alternatívny vzhľad (napríklad na zimné obdobie), pretože si len vytvoríte ďalšiu odvodenú tému, ktorú aktivujete a zároveň môžete hocikedy prepnúť späť na pôvodnú
- konzistentnosť kódu vám zabezpečí, že sa vo vašej téme dokonale vyznáte a môžete používať zaužívané názvy funkcií a tried, takže každá ďalšia téma, ktorú budete na frameworku vyvíjať, vám zaberie menej času
- pokrokovosť a nadčasovosť kódu, flexibilita pri vytváraní témy, ľahká rozšíriteľnosť a aktualizácia – to všetko umožňuje nasledovať aktuálne trendy a vždy využívať potenciál najnovšej verzie WordPress
- frameworky a nadradené témy vám často ukážu možnosti WordPress, ktoré ste pred tým nepoznali, takže sú aj dobrým nástrojom na rozširovanie vašich vedomostí v tomto smere
Komu je framework určený?
Frameworky sú primárne určené pokročilým vývojárom, ktorí sú schopní vytvoriť robustné nadradené témy, aby mohli byť užívateľmi alebo inými programátormi ďalej rozvíjané. Takou istou mierou môžu byť základným odrazovým mostíkom pre programátorov, ktorí sa ešte len začali ponárať do tajov vývoja tém pre WordPress.
Cieľom frameworku je poskytnúť stabilné a flexibilné jadro pre vašu tému, pričom HTML, CSS a JavaScript necháva celkom na vás. Kvalitný framework by vám mal poskytnúť také nástroje, aby ste mohli naplno využívať celý potenciál WordPress. Ako s tým naložíte záleží naozaj len na vás. Aj preto sa vývoj tém založených na frameworku odporúča skôr skúsenejším používateľom.
Zaujímavé pokročilé nadradené témy integrujúce vlastné frameworky
- Hybrid – veľmi kvalitne spravená nadradená téma poskytujúca veľa vylepšení a nástrojov na pohodlnejšiu výstavbu stránky s dobrou dokumentáciou a podporným fórom, poskytovaná úplne zadarmo a ako open source
- Thematic – flexibilná a extrémne rozšíriteľná, obľúbená nadradená téma pokročilých vývojárov, ale aj úplných začiatočníkov ponúkaná zadarmo
- Genesis – platená nadradená téma, ktorá sa svojou optimalizáciou kódu a SEO radí medzi špičku a umožňuje rýchle a jednoduché vytvorenie pozoruhodných webstránok
- Elemental – čistý a výkonný kód umožňuje prispôsobiť každý detail tejto nadradenej témy podľa vašich predstáv, je vhodný aj pre začiatočníkov
- Canvas – tiež široko prispôsobiteľná nadradená téma, ktorá má ambíciu byť určite dobrým základom pre vaše odvodené témy rôznorodého charakteru
- Headway – pokročilé WordPress riešenie pre skúsených vývojárov ale aj obyčajných užívateľov, ktorá o programovaní nemajú páru
- Carrington Build – dlhodobo vyvýjaný framework so zaujímavým konceptom
- Platform – jedna z najsťahovanejších tém z WordPress.org katalógu tém s neuveriteľným množstvom nastavení a prispôsobení
- Extreme One – je ideálna pre webdizajnérske kancelárie a ambiciózny bloggerov alebo freelancerov, ktorí by chceli vytvoriť webové stránky rýchlo, jednoducho a bez komplikácií
- Builder – veľmi komplexné riešenie, na ktorom postavíte aj robustnejšie webové stránky bez znalosti kódu
- Samozrejme netreba zabúdať ani na ku jadru pribalené TwentyTen a TwentyEleven, ktoré dokážu oveľa viac ako sa na prvý pohľad zdá a do WordPress sa integrujú naozaj elegantne
Ak máte svoj obľúbený framework alebo nadradenú tému, neváhajte sa s nami podeliť o svoje skúsenosti. Taktiež, ak máte nejaké otázky alebo niečomu v tomto článku nerozumiete, komentáre sú otvorené práve pre vás.
ZDROJE:
- http://justintadlock.com/archives/2010/08/16/frameworks-parent-child-and-grandchild-themes
- http://codex.wordpress.org/Child_Themes
- http://codex.wordpress.org/Theme_Frameworks