Přejít k hlavnímu obsahu

Jedna z nejpopulárnějších open source softwarových platforem Drupal 7 spatřila světlo světa v roce 2011. K současnému dni na něm „běží“ více než 820 000 webů. Sedmička nabízí 7 699 stabilních bezpečných modulů. Díky své stabilitě a spoustě funkcí se stále drží na špici oblíbenosti. 

S její neotřesitelnou pozicí ale v roce 2015 zamávalo vydání Drupalu 8, který sice nabízí „jen“ 2 070 stabilních bezpečných modulů, zato ale disponuje obří velikostí, podporuje HTML 5 a nabízí několik API pro napojení webových aplikací.

Ve finále tak nelze jednoznačně říci, která z obou platforem obsadila pozici vítěze. Abyste si o každé z nich udělali menší přehled, přinášíme vám největší lákadla „osmičky“ ve srovnání s neméně populární a zralou „sedmičkou“. 

Inovace

Přejít na Drupal 8 znamená přijmout nové a vzrušující inovace. Drupal 8 totiž nabízí nové funkce, které v Drupalu 7 nenajdeme. Jako v každém jiném softwaru, je nová verze bohatší na funkce a schopnosti, než její předchůdce. Vylepšení nové verze zahrnuje různé aspekty softwaru, od uživatelské přívětivosti, přes editoring až po vývojářské možnosti.

Osmička nabízí novou strategii vydávání aktualizací. To bude v praxi znamenat, že velké změny nebudou přicházet jen s novou verzí (např. jako z Drupalu 6 na 7, nebo ze 7 na 8), ale nový způsob vydávání umožní Drupalu zavést stěžejní novinky i do stávajícího Drupalu 8. Bude se tedy jednat o úplnou změnu zavedených pravidel a to nejen pro vývojáře.

Pro příklad uveďme některé nově uvedené funkce:

  • Drupal 8.2: Outside-in, nový experimentální modul, poskytující schopnost měnit nejčastější konfiguraci z front-endu [1].
  • Drupal 8.3: BigPipe vydán ve stabilní verzi, která poskytuje pokročilou implementaci cachingu založenou na BigPipe od Facebooku. Rovněž zavádí Workflow a Layout.
  • Drupal 8.5: Zavádí Layout Builder, který dává editorům možnost upravovat layout jejich obsahu [2]. BigPipe bude zároveň nastaven jako výchozí ve standardním profilu.
  • Drupal 8.6: Zavedení Workspace, které vylepší způsob vydávání obsahu pro editory [3]. 
  • Drupal 8.6: Nabídne nový, mnohem jednodušší způsob instalace, který je ideální cestou pro nové klienty [4].

Náš tip: Pro lepší přehled o nadcházejících novinkách a funkcích vám pomůže tento filtr.

Cena a námaha

Zvážíme-li životnost Drupalu 7, jeho konec se neúprosně blíží. Jakmile bude podpora „sedmičky“ ukončena, bude potřeba migrovat na novější verzi, což je neodmyslitelně spojeno s nemalými náklady a časovou náročností. 

Drupal 8 sice může v některých případech zvýšit krátkodobě náklady, avšak, strategie menších a častějších releasů slibuje, že tyto menší upgrady budou jednodušší a méně „bolestivé“. Osmička navíc poskytne čistější kódovou základnu. Naproti tomu dlouhodobá údržba bude oproštěna od vysokých nákladů na migraci z jedné hlavní verze Drupalu na druhou, jak tomu bylo třeba z Drupalu 6 na 7, nebo ze 7 na 8.

Od spuštění Drupalu 8 není migrace na novější hlavní verzi tak náročná a navíc budou moduly pro verzi 8 kompatibilní s následujícími verzemi. Nářky typu „nemůžu upgradovat na Drupal 9, protože moje nejvyužívanější moduly jsou kompatibilní pouze s Drupalem 8“ se tak stanou minulostí.

Bezpečnost

Všechny současné verze Drupalu jsou udrženy a hlavní bezpečnostní záplaty poskytovány i pro starý Drupal 6. Nejvíce pozornosti od komunity se dostává Drupalu 8. Ten se totiž může pochlubit největším množstvím vylepšení ve všech oblastech – od funkcionalit, zvyšování rychlostipřes bezpečnost, až po usnadnění při samotném používání.

Uživatelská přívětivost

Pokud vám záleží zejména na uživatelích, měli byste migraci na Drupal 8 zvážit. Drupal 8 je totiž od prvního dne svého vývoje zaměřen na uživatelskou přívětivost

Důležitou roli v celém ekosystému hrají web-programátoři a redakční týmy. Jejich zkušenostem se systémem začínají dostávat stále vyšší prioritu [5].

Pokud jste zvědaví, co nového vás čeká v Drupalu 8, bude vás jistě zajímat toto úložiště. Můžete si nainstalovat také Proof of Concept– nástroj, díky kterému si vyzkoušíte, jak bude nové administrátorské rozhraní vypadat.

„Drupalisti“ nováčci

Pro samotné vývojáře zavedení nového Drupalu 8 znamená, že cokoliv se nově naučí, to jim otevře dveře do světa PHP a nebudou již tolik vázání jen na drupalovský ekosystém a naopak. S těmito novými znalostmi se stanou všestrannějšími. 

Tím, že Drupal 8 sdílí více prvků s ostatními systémy (jako například zmíněný Symfony), je pro uživatele, ale i vývojáře mnohem dostupnější a přívětivější. 

Mezi další povedené funkce Drupalu 8 patří například registrační formuláře. V „osmičce“ jsou mnohem více přizpůsobitelné správcem webu, zatímco v Drupalu 7 se jejich úprava většinou prováděla z backendu, což se neobešlo bez asistence vývojáře. Díky úpravám v layoutu, který je robustnější a výkonnější, je také snadnější sestavování oblíbených landing pages

Výkon

Kdykoliv vyjde nová verze Drupalu, objeví se spousta článků o tom, jak je nová verze pomalejší než jeho předchůdce. Ani Drupal 8 těchto názorů není ušetřen. Ke srovnání je však nutné přistupovat obezřetně, protože bez uvážení jistých souvislostí porovnáváme naprosto nesrovnatelné. Drupal 8 má mnoho funkcionalit zahrnutých již v samotném jádru. To ale neznamená, že je jeho jádro těžkopádnější, ale že 96% stránek na Drupalu 7 bylo vytvořeno pomocí dodatečných modulů, které jsou již nyní součástí Drupalu 8. Pokud se zajímáte o toto téma, doporučujeme následující článek.

Ale stranou nelichotivých srovnávání. Drupal 8 přináší velká vylepšení ve výkonu. Disponuje totiž nástroji jako BigPipe a nabízí cache pro ověřené uživatele, díky kterým bude doručení obsahu k ověřeným a anonymním uživatelům hračka. To samozřejmě ve srovnání s úsilím, které byste museli vynaložit v Drupalu 7. A pokud je vás výkon důležitý, měli byste vzít na vědomí podporu PHP 7, kterou má Drupal 8 mnohem výkonnější než předchozí verze. 

Ovládání Drupalu

Je třeba mít na paměti, že Drupal pracuje se dvěma naprosto odlišnými tábory, které se vzájemně doplňují. Na jedné straně stojí vývojáři a na druhé weboví správci a administrátoři. Vývojáři se při přechodu na Drupal nejvíce potýkali s něčím, pro co se ujal pojem „drupalismus“ a co vývojáře izolovalo v drupalové bublině. 

Drupal 8 se rozhodl jít jinou cestou. Bude využívat více konvenční a standardizovanou architekturu, obsahující ve svém jádru Symfony komponenty, ale také se zaměří na objektově orientované moduly. Důsledkem bude, že vývojáři přestanou mluvit o hookách ale začnou mluvit v pojmech, kterým každý v PHP světě okamžitě rozumí. 

To znamená dvě zásadní věci. V první řadě bude jednodušší najímat vývojáře pro Drupal, neboť původní „drupalismus“ je značně omezen a je jednodušší ke zvládnutí pro vývojáře přecházející z jiného frameworku (jako Symfony nebo Laravel). A také by současní vývojáři pracující v Drupalu 7 neměli mít obtíže pochopit to, co již dobře v Drupalu ovládají i když se budou učit novým věcem, mezi které patří třeba sestavování modulů, jejich registrace, hookování do blokového systému nebo to, jak funguje systém událostí převzatý ze Symfony.

Z perspektivy webového správce nebo admina má Drupal 8 velice povědomé rozhraní a umožňuje jednoduchý přechod ze starší verze. Při srovnání rozhraní Drupalu 7 a 8 si lze všimnout jen několika mála rozdílů ve velmi povědomém a známém prostředí.  

Usnadnění přechodu na vyšší verzi

Mnoho zákazníků si položí otázku, proč by přecházeli na vyšší verzi jakéhokoliv softwaru, když s tím mohou počkat a přejít až na tu následující. Někdy to dává smysl, ale nyní v případě Drupalu 8 a nově zamýšleného cyklu menších aktualizací se situace mění. Častější aktualizace slibují snadnější přechody na vyšší verze díky kompatibilitě jádra. To na co byli uživatelé zvyklí při upgradu až do verze 7, je již minulostí.

Dalším pozitivem pro Drupal 8 je kompatibilita modulů pro nadcházející verze. Uživatel dostane jen výzvu, která mu doporučí upgrade vybraných knihoven, jiné komponenty nebo kódu, který by byl nekompatibilní s Drupalem 10, ale teoreticky se nebude jednat o nic, co by shodilo celý modul/stránku.

Budoucnost je ve hvězdách. Nebo v Drupalu?

Jedna z nejvíce očekávaných novinek v Drupalu 8 je nová API-first iniciativa. Za posledních několik let se totiž svět internetu dramaticky změnil. Dnes se k síti připojuje nespočetné množství zařízení a všechno se tak trochu komplikuje. Proto přestáváme hovořit o různých zařízeních a začínáme se zaměřovat na obsah, který je nyní na prvním místě. A právě na to by měl být CMS software připraven tak, aby byl schopen adaptovat se na nová pravidla hry.

Společnosti mají nesmírně náročné a často se měnící požadavky. Co bylo přijatelné včera, už nyní nestačí. Dnes potřebujeme šířit obsah mezi mnoho různých zařízení. Od desktopu, přes mobilní platformy až po hodinky nebo obrazovky na veřejných místech.  

Nyní je důležité mít CMS, který je schopný pružně se přizpůsobovat požadavkům, což snižuje budoucí náklady. Pokud využíváte Drupal 7, lze jej při patřičné snaze tvarovat a rozšiřovat, aby vyhověl vyšším nárokům. Na rozdíl od něj však Drupal 8 má tuto schopnost přímo implementovanou ve své architektuře.

Co říci závěrem?

Nezapomínejme, že co se hodí pro jeden projekt, nemusí se hodit pro druhý. V některých situacích vám může dávat smysl zůstat u „sedmičky“. Příkladem budiž třeba malé projekty
 

 


[1] https://www.drupal.org/node/2786039

[2]https://www.drupal.org/node/2924128

[3]https://www.drupal.org/node/2968491

[4]https://www.drupal.org/node/2969396

[5]https://github.com/jsdrupal/drupal/wiki/Follow-the-Initiative-&-Get-Involved

 

Drupal – to je svět sám o sobě. Tenhle nesmírně propracovaný systém pro správu obsahu, který původně napsal Dries Buytaert, umožňuje tvorbu internetových časopisů, blogů, internetových obchodů a jiných komplexních systémů. U nás na něm „běží“ třeba portál televizní stanice Prima, portál kanálu ČT24 nebo portál lázeňského města Karlovy Vary. Drupal je ovšem oblíbený nejen u nás, ale také ve světě. Tady máte 13 známých webů, které se bez Drupalu neobejdou.

#1 Entertainment Weekly

Webové stránky amerického týdeníku, který se zabývá velice širokým spektrem zábavního průmyslu od hudební scény, filmu a televize až po divadlo, knihy nebo počítačové hry. Rovněž uděluje každoročně ceny „Entertainer of the Year“ a to již od roku 1990. Zakladatelem týdeníku není nikdo menší, než newyorský Time, Inc. 

Zajímavostí webu je jeho migrace v roce 2015. Ta zahrnovala přechod samotného EW.com z CMS Vingette 6 a dalších 10 samostatných blogů běžících na WordPressu do jediné sjednocené platformy na Drupalu 7. Migrace zahrnovala téměř 219 000 příspěvků, 292 000 obrázků a 475 000 témat. Celá případová studie k nalezení zde.

#2 Oxfordská univerzita

Web Univerzity v Oxfordu má komplikovanou strukturu kvůli velkému množství stránek. Na druhou stranu však musí být svižný a jednoduchý. Drupal umožňuje vytvoření čistého a přehledného webu, který pokryje všechny oblasti studentských potřeb. Kdo má zájem o více informací, nalezne je na Drupal.org.

#3 Město Londýn

Město Londýn, potažmo Londýnská radnice, spravuje svůj web v Drupalu. Ve své staré verzi se však potýkali s propadem v návštěvnosti i zpětné vazbě. Vizuál byl zastaralý, obsah nepřehledný a dle ankety klesl také počet obyvatel Londýna, kteří byli informovaní o aktivitách radnice z 37 % v roce 2007 na 20 % v roce 2011. Starosta se tedy rozhodl k pomyslnému „stisknutí klávesy F5“.

Po vzoru vládního webu gov.uk byla zahájena transformace webu Londýnské radnice za pomoci Drupalu, se kterým měli kladné zkušenosti z minulosti. David Munn, šéf IT oddělení Správní instituce Velkého Londýna, k této transformaci uvedl: Open Source software jako je Drupal odbourává bariéry pro inovativní vývoj. V minulosti nám licenční smlouvy zabraňovaly v inovaci. Nové webové stránky by nemohly vzniknout bez spojení s velkými partnery a bez výhod mnoha cloudových a pružných schopností, které Drupal nabízí. Dosáhli jsme velké kulturní změny nejen na našich stránkách, ale také v naší organizaci.“

Celý projekt trval 5 let a kromě čistého a přehledného grafického zpracování přinesla nová verze občanům možnost vyplňovat dotazníky vyjadřovat se v diskuzích ke všem příspěvkům. Celou případovou studii naleznete zde.

#4 Francouzská vláda a Americké ministerstvo energie

Vládní úředníci na celém světě si nezřídka volí Drupal. Poskytuje mnoho příležitostí k online prezentaci práce odváděné vládou. Například striktní web Francouzské vlády. Vše je jasné, přehledné a funkční. Není divu, že i Americké ministerstvo energie využívá Drupal.

#5 Tesla

Jedna z nejdražších automobilových značek světa, Tesla Motors, by se rozhodně nespokojila s nějakým kompromisem při tvorbě svého webu. I když je design minimalistický na pohled, nebyl vůbec jednoduchý při své tvorbě. Každá stránka má svou vlastní strukturu, kombinující různé ikony, grafy, mapy a infografiku. Elon Musk má vskutku vytříbený vkus. Web je pro své návštěvníky velice přívětivý, stejně jako sám Drupal.

#6 Verizon

Verizon má na první pohled webové stránky, které potvrzují, že v jednoduchosti je síla.Na druhý pohled však uchvátí množstvím líbivé grafiky a animací a přesto působí minimalisticky. Jsou skvělým důkazem, jak široké využití má Drupal.

Další, neméně úžasnou implementací Drupalu je projekt Verizon Cloud Open APIs. Úkolem byl vývoj webových stránek a uvedení produktu na trh. Každý web měl mít vlastní design odpovídající zavedeným firemním šablonám. Design byl ale pevně zakódovaný a uvedení stránek se tak příliš protahovalo. Zadání projektu tedy převzala společnost Isovera ve spolupráci se společnostmi Acquia a Maark. Cílem bylo zkrátit čas potřebný k uvedení každé produktové stránky a zároveň zjednodušení tvorby vlastních stránek skrze web Verizonu.

Isovera se specializuje na Drupal a Verizon již Drupal využíval, takže výběr CMS byl snadný. Ve prospěch Drupalu hovořily především jeho přizpůsobivost, jednoduchá integrace a všestrannost pro obchodní interakce. Výsledkem bylo zavedení šablon, díky nimž se zkrátil proces, který předtím Verizonu zabral týdny, na proces zvládnutelný za den. Navíc šablony umožnily ne-vývojářským klientům vytváření webových stránek pomocí několika kliknutí myší, čímž se mnohonásobně zvýšilo využití produktu. Podrobnější informace v případové studii zde.

#7 Pinterest

Volba při zavádění komerční sekce světoznámého webu Pinterest, který má k roku 2018 celkem 250 milionů aktivních uživatelů, padla na Drupal. Skrze společnost Phase2, která se díky tomuto projektu podílela na vývoji vícejazyčného Drupalu 8, se povedlo Pinterestu zavést 31 jazyčnou platformu pro využití Pinterestu komerční sférou.

To vše nejen díky splnění tohoto základního požadavku, ale také díky podpoře ekosystému pro digitální integraci, zahrnující podporu pro e-mail, analytiku, marketingovou automatizaci a další digitální technologická řešení. Nový business.pinterest.com je úzce propojen s platformou Salesforce CRM společnosti Pinterest, která umožňuje týmu digitálního marketingu zachytit nové obchodní příležitosti a rozšířit stávající partnerství. Více zajímavostí v případové studii.

#8 Warner Bros. Records

Obrázky, velké výrazné ikony a rozkliknutelné detaily, to je web vůdčí společnosti filmového průmyslu. Nabízí skvělou příležitost pro Drupal, aby předvedl něco opravdu stylového. Skvěle spravuje obsah a design je skvostný. A to bez kompromisů v rychlosti.

#9 Timex

„Při navrhování našich nových stránek jsme se zaměřili především na flexibilitu, tak, abychom mohli většinu práce dělat sami a nemuseli jsme tak být rukojmím externí vývojářské společnosti“. Tak popsal zrod nového webu Cal Crouch, vedoucí digitálního marketingu a e-commerce společnosti Timex.

Světoznámá hodinářská firma zoufale potřebovala nové řešení svých webových stránek. Navíc stála o řešení šité na míru. Aby web přesně odrážel filozofii společnosti, nabízející ideální styl hodinek pro každého a zároveň přizpůsobit obsah jednotlivým trhům této globálně expandující společnosti.

Jakmile vypršela smlouva s předchozím CMS poskytovatelem, rozhodil Timex sítě po nové, flexibilnější platformě. Drupal zvítězil díky své bohaté výbavě „fíčur“ a modulární architektuře s nádhernými designy. A nyní spolu s vyhledávačem od Acquia odvádí nová platforma tu nejlepší práci. V řeči čísel se podařilo dosáhnout těchto klíčových úspěchů:

  • Migrace 22 webů pomocí Drupalu
  • Od návrhu po spuštění webu jen za 6 měsíců
  • Více než 400 000 vyhledávání měsíčně
  • Snížení počtu podvodných transakcí o 1200 %

Další detaily tohoto projektu jsou k dispozici zde.

#10 eBay Inc.

Firemní stránky eBay jsou rovněž dílem Drupalu. Na těchto stránkách získáte detailní informace o společnosti samotné, žádosti pro uchazeče o pracovní pozice nebo zde můžete sledovat aktuální informace.

#11 Autodesk Design Academy

Společnost Autodesk je lídrem ve 3D designu, inženýrském a grafickém softwaru. V zájmu budoucích inovací Autodesk poskytuje své produkty studentům a vyučujícím po celém světě. Webová platforma Autodesk Design Academy podporuje tuto iniciativu tím, že vytváří prostor, kde uživatelé vytvářejí obsah a sdílejí dovednosti.

Základní požadavky Autodesku na tento vzdělávací prostor byly dané:

  • přístup k online obsahu pro samovzdělávání,
  • interakce s různými typy sdílených medií
  • tvorba portfolií, kde by uživatelé vystavovali vlastní projekty a získali zpětnou vazbu

Autodesk se rozhodl přejít na Drupal, projekt se však potýkal s problémy, čemuž nepomáhaly ani časté změny vývojářských společností. Nakonec získala projekt firma FFW. Ta pro komunitu implementovala nezbytně nutné funkce, přičemž současně updatovala a vyčistila back-end.

Odstranila klíčové problémy a zvýšila výkon webu o 276% a to vše za poloviční čas, než předchozí vývojáři. Povedlo se také integrovat obsah z externího zdroje, kterým je Redshift, blog Autodesku. Ten však běží na Wordpressu. FW tedy sestavila Wordpress-Drupal importer, kterým je zobrazován oblíbený vzdělávací obsah z blogu na Design Academy. Projekt přestavby tohoto vzdělávacího portálu splnil požadavky, které lze čísly shrnout takto:

  • 125 násobné snížení počtu chyb
  • O 40 % efektivnější servery
  • zrychlení načítání stránek o 183 %
  • zvýšení výkonu serverů o 276 %
  • snížení počtu modulů na stránkách na polovinu
  • nahrávané/stahované soubory uživatelů jsou na samostatném úložišti a neomezují tak rychlost stránek

Případová studie zde.

#12 Twitter

Ano, čtete správně. I takový kolos jako Twitter využívá Drupal. Přesto že není samotný Twitter sestaven na Drupalu, využívá jej pro svůj vývojářský portál. Zde poskytují své API, dokumentaci a přesměrovávají na fóra. Vzhledem k obrovské členské základně, kterou portál má, bylo třeba najít dostatečně robustní řešení, které Drupal splňuje.

#13 Greenpeace Greenwire Global Community

Greenpeace international je dobře známá celosvětová nezisková organizace, která cílí na ochranu životního prostředí. Založena byla v roce 1971, k dnešnímu dni působí ve 44 zemích světa, má 2,8 milionu sympatizantů a na Facebooku má téměř 2 miliony „lajků“.

Jejich členská základna čítá na 20 000 dobrovolníků v téměř 400 lokalitách. Vzhledem k jejímu rozprostření však zoufale potřebovala řešení, které by podporovalo lokální kampaně svých sympatizantů ve svých vlastních komunitách. Neexistovala totiž žádná centrální komunikační síť dobrovolníků ani globální databáze dokumentů.

Drupal, jakožto snadno rozšiřitelný, flexibilní open-source software, byl jasnou volbou. Umožňoval splnit všechny hlavní potřeby projektu a to: snadnou použitelnost, sociální aspekty, flexibilitu a bezpečnost. Především to jsou právě vychytávky po vzoru sociálních sítí, ze kterých nový web těží.

Po vzoru Facebooku jsou tu shoutboxy pro úzké skupiny nebo celou komunitu, tvorba událostí, vyhledávání a přidávání přátel. Zajímavostí je správa uživatelských rolí.Ta umožňuje uživatelům mít různé role na různých doménách GG, národních nebo regionálních kancelářích. K tomuto byl vyvinut samostatný modul.

K celému projektu existuje rozsáhlá případová studie.

Drupal vládne světu internetu

Jak je z výše uvedeného patrné, Drupal si získal silnou fanouškovskou základnu po celém světě. Když ke zmíněným webům doplníme, že jej využívají také oficiální stránky Ozzyho Osbourna nebo britská stanice MTV, není o jeho kvalitách pochyb.

Čísly vyjádřeno, řetězec ZKung Fu, to je více než 600 poboček ve více než 43 čínských městech, 4 internetové stránky a vlastní sociální síť jménem WeChat. V roce 2015 činily tržby řetězce 750 milionů USD.  Po úspěšné migraci na Drupal jsou transakce na miliardě, a to právě díky zapojení Drupalu. 

Ještě před rokem 2015 ve ZKung Fu leželo všechno na bedrech vlastních softwarových řešení. Pozorné vedení si ale uvědomovalo, že jejich východiska nedokážou přinést požadovanou míru integrace, flexibility a škálovatelnosti k optimálnímu chodu a ještě to navíc sladit v rozumném poměru k vynaloženým finančním nákladům. Vedení vidělo, že provoz řetězce vyžaduje už více než jen možnosti pokročilého softwaru pro řízení dodávek, každodenního provozu a podnikového účetnictví. 

Úkol zněl jasně: kompletní transformace z proprietární softwarové platformy ZKung Fu na otevřenou a modulární platformu Drupal. Ostatní možné platformy byly vyloučeny, a to i z toho důvodu, že ZKung Fu potřeboval udržet iterativní vývoj produktů a oddělenou architekturu. 

Nejdůležitější mezník projektu 

Zlomem bylo vytvoření sítě poskytovatelů, tzv. mikro-podniků s podstatným využitím více Drupal webových řešení. Proč zrovna tento čin? Protože rozdělení funkčnosti do více stran umožnilo rychlejší deploy a vývojářské práce. Každý poskytovatel mikro-podniků zná méně z celé komplexní architektury. Díky zvolenému Drupalu mohou nyní mikro-procesy využívat společnou sadu webových služeb, a tudíž se nemuselo jít zdlouhavější cestou vývoje aplikací s distribuovanými datovými strukturami.

Data flow

V praxi to odpovídalo vytvoření 3 specifických Drupal Commerce.

  • První stránka pracuje s informacemi o produktech, správami poboček, a to včetně pravidel o cenách, jejich trvání, dostupnosti a dalších obchodních podmínek, které se k nim pojí.
  • Druhá stránka zpracovává platby a získává 50 % příjmů společnosti(přes 100 milionů dolarů ročně). Tato stránka plně podporuje platbu v hotovosti, kreditní kartu a další typy minoritních platebních metod.
  • Třetí stránka zpracovává kompletní informace o objednávce. Čínští vývojáři dokonce postavili hardware a software pro jejich POS (Point of Sale – místo prodeje, pokladní místo).

Drupal vyhovuje řetězci i z hlediska marketingové propagace, CRM a ERP řešení pro podporu získávání nových zákazníků, věrnostních programů a plánování lidských zdrojů.

Použité klíčové moduly v projektu:

Originální a nezkrácený příspěvek, publikovaný v angličtině, najdete na oficiálním webu Drupal komunity.

 

Dnes se v Drupalu podíváme na základní programování custom modulu. Pokud se snažíme na stránku přidat nějakou novou funkcionalitu, téměř vždy nalezneme nějaký korespondující modul vytvořený a udržovaný Drupal komunitou (tj. contrib modul). Občas se však stane, že klient vyžaduje řešení, které nám žádný contrib modul neposkytuje a my ho tak musíme naprogramovat (tj. custom modul). Custom modul může mít mnoho funkcí a využití. Jedná se o část kódu, která reaguje s Drupalem jako celkem a v předem definovaných fázích přidává další funkcionalitu.

Modul, kterým se budeme zabývat, bude námi vytvořený formulář s odkazem v menu. Formulář bude mít několik polí, která se budou validovat a odesílat. Pro validaci a odeslání využijeme tzv. hook. Hook nám umožňuje interakci mezi jádrem Drupalu a samotným modulem. V první části si vystačíme s následujícímu hooky:

  • hook_form – umožňuje definovat formulář,
  • hook_form_validate – umožňuje provést validaci konkrétního formuláře,
  • hook_form_submit – spouští konkrétní funkce v době odeslání formuláře,
  • hook_menu – umožňuje přidat položky do konkrétního menu.

Základním definováním a nastavením těchto hooků bude končit první část návodu. Druhá část návodu dále naváže přidáním Javascriptových funkcí pro větší uživatelskou přívětivost.

 

VYTVOŘENÍ SOUBORŮ PRO MODUL

Abychom mohli náš modul využívat v naší Drupal instalaci, musím pro něj nejdřív definovat složku a vytvořit soubory s příponami .info a .module. Proto si nejprve v naší instalaci na cestě sites/all/modules/custom vytvoříme složku s názvem my_form a uvnitř složky vytvoříme zmíněné soubory. Nejprve je nutné definovat .info soubor a to následovně:

custom modul info

Do položky jméno napíšeme název našeho modulu, do popisu specifikujeme, co by zhruba měl náš modul dělat, package nastavíme na Custom a verzi na 1.0. Core je nastavení, pro jakou verzi jádra Drupalu by měl modul fungovat, v našem případě verze 7.

Pokud jsme vše udělali správně měl by se náš modul objevit na url /admin/modules v administraci, kde je možné ho povolit.

administrace modulu

 

VYTVOŘENÍ ODKAZU V MENU

Nyní konečně přejdeme k samotnému programování modulu. Nejprve přidáme popis modulu a všech implementovaných hooků, a to tak, abychom dodržovali coding standards.  (V tomto ukázkovém modulu nebudou coding standards dodržovány úplně přesně, protože se snažím komentáři popisovat jednotlivé funkce pro větší přehlednost).

Dále vytvoříme odkaz v menu, na kterém bude náš formulář přístupný. Definujeme si již zmíněný hook_menu a nastavíme ho podle dokumentace na Drupal.org. V našem případě chceme, aby se na odkazu zobrazil námi definovaný formulář my_form. Je konvencí, že pokud chceme využít hook, musíme ho pojmenovat ve formátu název_modulu_název_hooku. Pokud se můj modul bude jmenovat branding, pak bude název hooku pro menu branding_menu.

Hook menu

 

VYTVOŘENÍ FORMULÁŘE

Dále je nutné implementovat samotný formulář. Toho docílíme pomocí funkce hook_form. Můžeme si všimnout, že hook příjímá parametry $form a $form_state. V proměnné form je uložena definice formuláře a $form_state nám umožňuje použít hodnoty vyplněné uživatelem. Této funkce využijeme při validaci. Dalším krokem je definice formulářových prvků. Náš formulář bude obsahovat textové pole a checkbox. Součástí každého formuláře je i tlačítko, které celý formulář odešle ke zpracování. Po vyplnění příslušných polí podle Drupal form api máme základní definici formulářových prvků hotovou.

Hook form

 

VALIDACE A ODESLÁNÍ FORMULÁŘE

Posledním krokem je přidání validační a submit funkce. Validace v tomto případě kontroluje, zda je vyplněno textové pole a zároveň je checkbox nastaven na „zaškrtnuto“. Je to z toho důvodu, že v další části návodu budeme „schovávat“ textfield a zobrazovat ho pouze pokud bude checkbox zaškrtlý.

Pokud checkbox zaškrtneme, ale zároveň nevyplníme textové pole, tak nám Drupal odpoví chybovou hláškou „musíte vyplnit jméno“ a funkce hook_form_submit se nezavolá, protože formulář zůstane ve stavu „neodeslán“. Jakmile validační funkce žádnou chybu neobjeví, tak se submit funkce zavolá a formulář je v pořádku odeslán.

Hook form validate

 

Zde máme již hotový formulář ve stavu chybné validace:

error message

 

Tím jsme se dostali na konec první části našeho malého seriálu o tvorbě custom modulu. V další části si do formuláře přidáme Javascript a formuláři přidáme konkrétní funkci. Již hotový modul si můžete stáhnout v přiloženém souboru.

Jak známo, Drupal kromě kvalitního CMS poskytuje také možnosti využít jeho bohatého frameworku. „Bastlit“ vlastní moduly není žádný problém, ale pokud budete chtít programovat na úrovni, případně pracovat ve větším teamu vývojářů, neobejdete se bez znalosti Drupal coding standards.

Coding Standards Drupalu definují všechny zásady formátování kódu (odřádkování, počty mezer u jednotlivých operátorů, …). Komunita Drupalu vyžaduje Coding Standards u všech contribute modulů (moduly poskytnuté komunitě) a je to zcela pochopitelné – v momentu, kdy verzujete kód (např. v GITu), chcete sledovat pouze změny logiky kódu, nikoli formátování. Ve chvíli, kdy 2 programátoři používají jiné formátování kódu, je log změn zcela zmatený a většinu času strávíte pouze luštěním změn místo porozumění kódu.

Pochopitelně je dosti náročné pamatovat si přesně Coding Standards a psát každý řádek podle nich. Naštěstí nám komunita poskytuje podporu coding standards do běžně používaných vývojových prostředí jako jsou NetBeans, PhpStorm,... (pozn. pro české vývojáře – PSPad a poznámkový blok nejsou Drupalem podporovaná vývojová prostředí :-). Tento článek zaměřím na volně dostupné NetBeans, nicméně níže bude pár odkazů i pro konkurenční vývojová prostředí.

Formátování kódu v NetBeans

NetBeans umožňují formátovat bloky kódu nebo celé soubory pomocí klávesové zkratky CTRL+F. Proto, aby kód naformátovala dle Drupal coding standards, stačí jen vše nastavit dle podrobného návodu plného screenshotů, který je na Drupal.org. Po nastavení, které zabere sotva 15 min, můžete vesele formátovat.

Formátování NetBeans ale nezaručí 100% dodržování Coding Standards. Např. správný formát komentáře hooku,… formátování neřeší. Proto se hodí další nástroj – Code Sniffer. Jedná se o nástroj, který umožňuje kontrolovat zejména právě Coding Standards. Drupal podporuje PHP_CodeSniffer. Pro tento nástroj definuje všechna důležitá nastavení pomocí Drupal „modulu“ Coder. PHP_CodeSniffer se stará o kontrolu coding standards, zatímco Coder definuje Drupal Coding Standards pro Sniffer. Vlastní výstup z PHP_CodeSnifferu pak v příkazové řádce vypadá takto:

FILE: C:\Data\WWW\sources\index.php ---------------------------------------------------------------------- FOUND 2 ERRORS AFFECTING 2 LINES ---------------------------------------------------------------------- 12 | ERROR | [ ] There must be exactly one blank line after the file | | comment 24 | ERROR | [x] Doc comment short description must end with a full | | stop ---------------------------------------------------------------------- PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY ---------------------------------------------------------------------- Time: 232ms; Memory: 3.25Mb

Takový výstup je pěkný pro kontrolu, ale pro rychlý vývoj je pomalý. Naštěstí pro PHP_CodeSniffer existují pluginy i do NetBeans, který všechna upozornění pěkně vizualizuje a zdokonaluje tak vývoj dle Coding Standards. Konkrétně se jedná o pluginy phpcsmd a phpMD / PHP. phpMD / PHP je bohužel pouze pro NetBeans 7.x, ale phpcsmd podporuje NetBeans 7.x i 8.0.

Vizualizace pomocí phpcsmd vypadá pak takto:

NebBeans screenshot

Instalace CodeSnifferu do NetBeans

Instalace výše uvedených nástrojů a pluginů není úplně přímočará, proto uvádím STEP-BY-STEP návod, abyste zbytečně netrávili čas nad nastavením a mohli se vesele pustit do Drupal Coding Standard vývoje. Návod je konkrétně pro Windows 8 a NetBeans 8.0:

  • Pokud nemáte instalované PHP (v příkazové řádce zkuste php -v).
    • Stáhněte si PHP 5.4 z php.net (stahuj: VC9 x86 thread safe zip) na https://windows.php.net/download/#php-5.4
    • Unzipněte si, kam chcete instalovat. Např. C:\www\php (! Cesta nesmí obsahovat mezery jako např.: "C:\Program Files (x86)", jinak nebude fungovat CodeSniffer v NetBeans.)
    • Stáhněte si pear 
    • Přesuňte soubor go-pear.phar do C:\www\php
    • Přejmenujte php.ini-development na php.ini ve složce C:\www\php
    • Běžte do: Ovládací panely, najděte a otevřete "Upravit proměnné prostředí systému", dole klikněte na "Proměnné prostředí...", ve spodní části najděte proměnnou "Path" a na její konec přidejte ";C:\www\php"
    • Spusťte si příkazovou řádku jako administrátor
      • Zadejte: cd C:\www\php
    • Nainstalujte pear: php go-pear.phar
      • Bude to po vás chtít vybrat typ instalace, chcete "system". Tzn. stačí jen enter
      • V dalším kroku to kontroluje, zda má správně vyplněné cesty. Je třeba změnit cestu k pear.ini. Tzn. zadejte 10, enter, a zadejte cestu C:\www\php\pear.ini
    • Nakonec z průzkumníku spusťte C:\www\php\PEAR_ENV.reg
  • Instalace PHP CodeSnifferu
    • Otevřete příkazovou řádku
      • cd C:\www\php
      • pear install PHP_CodeSniffer
      • otestujte, že se podařilo přes: phpcs --version
    • Stáhněte si coder modul, poslední verzi 8.x (verze 8.x je určena pro Drupal 6,7 i 8. Verzování modulu může být matoucí…)
    • Coder modul rozbalte např. do C:\www\Coder
    • Otestujte, že Code Sniffer s Drupal Coding Standards funguje přes příkazovou řádku: phpcs --standard="C:\www\Coder\coder_sniffer\Drupal" "[cesta k testovanému souboru]"
    • Mělo by to vrátit něco jako:

FILE: C:\Data\WWW\sources\index.php ---------------------------------------------------------------------- FOUND 2 ERRORS AFFECTING 2 LINES ---------------------------------------------------------------------- 12 | ERROR | [ ] There must be exactly one blank line after the file | | comment 24 | ERROR | [x] Doc comment short description must end with a full | | stop ---------------------------------------------------------------------- PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY ---------------------------------------------------------------------- Time: 232ms; Memory: 3.25Mb

  • Instalace do NetBeans
    • Nainstalujte si do NetBeans plugin "phpcsmd" (V NetBeans: Tools->Plugins->Available plugins nebo Downloaded , pokud si ho ručně stáhnete na https://plugins.netbeans.org/plugin/42434/phpcsmd)
    • Nastavte si ho v NetBeans přes Tools->Options->PHP->PHPCSMD:
      • script location=C:\www\php\phpcs.bat
        • Cesta nesmí obsahovat mezery. Pokud v cestě mezery máte, vytvořte si link pomocí příkazové řádky a příkazu mklink tak, aby linkovaná cesta mezery neobsahovala)
      • standard=C:\www\Coder\coder_sniffer\Drupal    
      • extensions=php, module, inc, install, test, profile, theme, js, css, info, txt
      • A nahoře v sekci General je možné zaškrtnout: update on save, aby vám to projelo kód po každém uložení

To je vše.

Trocha zklamání na závěr

Práce s tímto pluginem ukázala, že nefunguje stoprocentně správně a některé chyby PHPCS nevypíše. Pokud si chcete být jisti, že váš kód splňuje Drupal Coding Standards, je třeba před ukončením práce zkontrolovat svůj kód přes příkazovou řádku. (Jak bylo zmíněno výše, test provedete příkazem phpcs --standard="C:\www\Coder\coder_sniffer\Drupal" "[cesta k testovanému souboru]").

I tak vám NetBeans plugin výrazně usnadní dodržování Coding Standards.

Příjemné kódění!

Další odkazy, které se mohou hodit:

Zdroje:

Bezpečnost ve světě Drupalu

V dnešním internetovém světě je otázka bezpečnosti zcela zásadní. Existuje spousta softwaru, který cílí na nezabezpečené formuláře a zcela je zahlcuje obrovským množstvím nesmyslných dat. V tomto díle seriálu tematické moduly si představíme několik nejrozšířenějších možností, jak těmto spam útokům zabránit. Drupal nabízí na výběr z několika větších contributed modulů (oficiální moduly Drupal komunity) a ty pak připojí k webovým formulářům (webformům, registračním formulářům atp.). Spousta těchto modulů je známá i mimo svět Drupalu a je vyvíjena na několik platforem.

Drupal security
Spambot
Obrázek A - Typický spambot

 

CAPTCHA

Nejznámějším zabezpečovacím mechanismem proti spamu je CAPTCHA (completely automated public turing test to tell computers and humans apart). V překladu se jedná o kompletně automatický Turingův test, pomocí kterého oddělujeme počítače od lidí. Turingův test (vytvořen Alanem Turingem v roce 1950) je test, který prověřuje, zda se systém umělé inteligence opravdu chová inteligentně. Zjednodušeně řečeno poté pomocí tohoto testu můžeme oddělit počítače od lidí.

CAPTCHA
Obrázek B - Klasická CAPTCHA

 

Klasická podoba ochrany CAPTCHA na webových stránkách je na obrázku výše. Do Drupalu se dá integrovat pomocí základního modulu CAPTCHA, který lze pak rozšiřovat o další funkcionality (např moduly webform auto captcha, CAPTCHA after....).

reCAPTCHA

Modul využívá reCAPTCHA služby, kterou vydává Google. Tato služba poskytuje velmi dobrou ochranu za pomoci CAPTCHA, ale její nespornou výhodou je také to, že s každou vyřešenou CAPTCHou pomáhá digitalizovat dokumenty, anotovat obrázky a vytvářet datasety pro naučení obrázků. Tato data jsou pak využívána např. v aplikacích pro nevidomé uživatele. Pro administrátora to znamená výbornou ochranu a pro uživatele dobrý skutek navíc.

reCAPTCHA
Obrázek C - reCAPTCHA v klasické formě

 

reCAPTCHA zjednodušená
Obrázek D - Jednoduchá zaškrtávací reCAPTCHA

 

reCaptcha má na rozdíl od klasických podob ještě možnost přečtení textu, refreshe a nápovědy. Jedná se o velmi často užívanou formu ochrany.

CAPTCHA Webform Bridge

Pomocí tohoto modulu lze automaticky připojovat, či vypínat testy typu CAPTCHA (tedy i reCAPTCHA atp.) k formulářům typu webform. Jedná se o jednoduchý modul – pokud je povolen, pak se bude CAPTCHA automaticky přidávat k webformům. Tento modul je velmi často využíván na různých stránkách s větším počtem webform formulářů (např. pravidelné soutěže).

CAPTCHA after

Jedná se o rozšíření, které vytváří CAPTCHA filter pouze na webformech, které byly několikrát po sobě špatně/správně odeslány. V nastavení modulu můžeme zvolit počet po kolika odesláních se bude kontrola zobrazovat. Není nutné modul zapínat pro celé stránky, ale můžeme ho upravit pouze pro některé URL.

DRUPAL bloky
Obrázek E - Moduly v Drupalu jsou jako stavebnice 

 

BOTCHA

BOTCHA je alternativou k modulu CAPTCHA. BOTCHA byla vyvinuta jako reakce na horší uživatelské prostředí modulu CAPTCHA poté, co se spamboti naučili obcházet některé typy tohoto modulu. Vývojáři na to reagovali zvýšením bezpečnosti (delší slova, hůře čitelná...), což mělo za následek špatnou zpětnou odezvu od uživatelů. BOTCHA nechá boty odeslat formulář, ale poté ho vyfiltruje a ponechá pouze lidské odpovědi. Spoléhá především na to, že spamboti jsou obvykle jednoduché skripty a je jednoduché naleznout vzor, podle kterého posílají odpovědi do formuláře. Jakmile je bot zachycen, tak je automaticky zablokován (prevence proti přetížení kvůli velkému množství odpovědí). Největší výhodou je pak především to, že lidští uživatelé tento typ ochrany vůbec nepostřehnou. Jednou z možností obrany je nasazení BOTCHA a zároveň CAPTCHA ochrany. Zajímavostí je, že jedním z prostředků ochrany v modulu BOTCHA je využití ochrany typu HONEYPOT, o které se dozvíte více v dalších částech článku.

BOTCHA výstup
Obrázek F - Výstup modulu BOTCHA

 

MOLLOM

Mollom je efektivní rozpoznávání uživatelů na základě jejich příspěvků na stránkách, reputaci a předchozí aktivitě. Tyto uživatele rozděluje do tří skupin (člověk – HAM, bot – SPAM, není si jist - UNSURE) a následně provádí úkony přiřazené těmto skupinám. V případě rozpoznání člověka ho nechá publikovat obsah a nebude ho v ničem omezovat. Pokud rozezná bota, okamžitě ho zablokuje. Skupině UNSURE pak zobrazí CAPTCHu, kterou má v sobě zabudovanou a následně uživatele rozdělí do skupin HAM (člověk), nebo SPAM(bot).

Schéma Mollom
Obrázek G - Schéma MOLLOM

 

Je to tedy takový kompromis mezi tvrdým řešením typu zobrazovat CAPTCHA všem a měkkým řešením – nezobrazovat ji nikomu (a filtrovat uživatele jiným způsobem).

Spam module

Tento modul je dostupný pouze pro zastaralou verzi Drupalu (Drupal 6.x). Spam filter je poskládání několika služeb, které detekují a blokují spam na celém webu. Výhodou je, že není potřeba spoléhat se na externí programy. Modul automaticky vyhledává podezřelý obsah, url a poté administrátorům pošle notifikaci o tom, že je tento obsah blokován. Modul využívá několika filtrů:

Bayesian filter 

Custom filter 

URL limiter 

SURBL 

Node age filter 

Duplicate filter

SPAM
SPAM!

 

Honeypot

Modul Honeypot používá dvou metod ke zjištění nechtěných programů (Honeypot a Timestamp). Metoda Honeypot je vlastně past na boty, která využívá toho, že boti útočí na formuláře, ze kterých mají prospěch. Tyto formuláře jsou pro uživatele skryty, ale boti je často vidí a vyplňují do nich vesele hodnoty. Vyplnění hodnot pak způsobí sklapnutí pasti a bot je zablokován. Metoda Timestamp využívá toho, že se boti snaží vyplnit v co nejkratším čase co nejvíce formulářů. Skutečným uživatelům vyplnění formuláře trvá minimálně několik vteřin. Tímto způsobem se pak dá odlišit uživatel od bota.

Honry pot ochrana
Obrázek I - Past typu honey - pot

 

Terminátor bot
Obrázek J - Terminátor bot se letí chytit do pasti

 

Antispam module

Modul se vyvinul z externího antispamového řešení Akismet. Akismet sbírá data ze všech webů, kde je nasazen a podle nich pak určuje kdo je spamer a kdo reálný uživatel. Antispam podobně jako Akismet využívá externí služby na detekci spamu. Výhodou tohoto modulu je možnost vybrat si externí službu na detekci spamu. Na výběr je Akismet, Type Pad Antispam a Defensio. Modul v sobě také obsahuje pomocný submodul, který na základě informací z filtru (množství publikovaného obsahu) dává uživateli specifické role. Těmto rolím se pak filtr může v klidu vypnout.

Který modul je tedy nejvýhodnější?

V článku jsme si představili několik možností, jak se chránit proti spamu a botům, kteří dokáží velmi znepříjemnit život každému administrátorovi. Jak je z článku patrné, tyto možnosti se v zásadě dělí na dvě hlavní kategorie – uživatel vidí ochranu a „otravuje“ mu život, uživatel ochranu nevidí a je spokojený. Pro většinu modulů z toho nakonec vyplynulo, že je třeba kompromis mezi těmito kategoriemi. Tato řešení jsou pak tvořena „tvrdou“ ochranou (např. typu CATPCHA) a „měkkou“ ochranou (např. typu Honeypot). Pro většinu webů se obvykle používá ochrana CAPTCHA hlavně díky její spolehlivosti a nenáročnosti. V dnešní době je ale lepším řešením spojit tento typ ochrany se sofistikovanějším řešením. Poté budou šťastní jak návštěvníci webu, kteří již nebudou muset pořád luštit klikiháky v poli, tak i administrátoři, kteří se nebudou muset probírat nepřeberným množstvím nesmyslných odpovědí. 

 

Zajímá vás problematika tematických modulů? Přečtěte si 2. část!