Pokud patříte mezi čtenáře Intervalu, asi jste už někdy stáli před úkolem vytvořit osobní stránku, soukromý weblog, firemní prezentaci nebo třeba komunitní web. Pokud ano, možná vás napadlo, že na weblog by bylo vhodné použít WordPress nebo nějakou službu typu Bloguje.cz, na komunitní fórum že by se hodilo phpBB a firemní prezentaci že radši uděláte „ručně“. Svoboda výběru je skvělá věc a potkáte řadu lidí, kteří budou mít s přístupem „speciální činnost vyžaduje speciální nástroj“ jen ty nejlepší zkušenosti.

Existuje ale i druhý přístup, který staví na konzistentnosti. Pokud byste našli jeden nástroj, který by podporoval osobní weblog, firemní prezentaci, diskusní fórum, kooperativní psaní článků, wiki a další, mělo by to několik příjemných důsledků – nemuseli byste se učit ovládat a spravovat několik různých systémů, prohledávání nebo RSS napříč celým webem by bylo automaticky „v ceně“ a podobně. Pokud je vám tento přístup sympatický, vítejte u povídání o moderním a flexibilním Open Source CMS jménem Drupal.

CMS nepotřebuji, umím programovat sám

U libovolného webu máte v zásadě tři možnosti, jak se dopracovat výsledku:

  1. První možností je nechat si webovou stránku poskytovat jako službu, což je zcela běžné třeba u weblogů – stačí připomenout služby typu Blogger nebo blog.cz. Stránku máte k dispozici okamžitě a většinou zdarma, na druhou stranu se obvykle musíte rozloučit s možností jakýchkoli pokročilých úprav. Komplikovanější typy webů se navíc touto formou takřka neposkytují.
  2. Řada lidí proto tvoří weby vlastními silami. Proč ne, technologie PHP a MySQL nebo ASP.NET a MS SQL jsou hojně rozšířené a mít věci pevně ve svých rukou může být často značnou výhodou. Tato cesta ale na druhou stranu stojí hodně úsilí i času a navíc vyžaduje nezanedbatelnou kvalifikaci. Případná je výzva Iva Lukačoviče „rozhodněte se, jestli chcete psát blog, nebo programovat blogovací systém“ z článku Jak blogovat a přežít.
  3. Třetí cestou jsou CMS neboli redakční systémy. Záleží samozřejmě systém od systému, ale obvykle dostáváte do rukou předem připravený softwarový balík, který v nejjednodušším případě pouze nasadíte na server a začnete používat, v případě náročnějších požadavků ale obvykle není problém si požadovanou funkčnost doprogramovat.

Je věcí konkrétních požadavků a často i osobního vkusu, kterou cestou se vydat. Nepochybně jsou případy, kdy jednoznačně zvítězí ta či ona varianta, pokud ale váháte mezi vlastním vývojem a redakčním systémem, čtěte dále. Drupal má opravdu hodně co nabídnout.

Dobrý den, jmenuji se Drupal

Systém Drupal je Open Source CMS naprogramovaný v jazyce PHP využívající databázi MySQL nebo PostgreSQL. Dobře, tuhle větu použijte, až se vás někdo bude na Drupal ptát a na odpověď budete mít 10 sekund. Co je ale Drupal ve skutečnosti? Lidé, kteří mu pronikli pod kůži, o něm říkají, že je to:

  • MVC framework
  • Content Management Framework s vestavěnou výchozí implementací CMS
  • CMS construction kit

Všechna tato pojmenování, jakkoli se mohou zdát obskurní, naznačují, že zařadit Drupal do kategorie běžných CMS by bylo přinejmenším podceněním jeho potenciálu.

Proč právě Drupal?

Tato série článků nechce být a nebude komparativní, přesto bych rád zmínil, proč jsem si k popisu vybral právě Drupal, když na trhu existují desítky populárních a relativně kvalitních konkurentů (nejčastěji je Drupal srovnáván s CMS Mambo/Joomla). Můžete se dočíst, že Drupal má čistší kód než konkurence, obsahuje výkonné (ale komplikované) kategorizační schopnosti, je snadno rozšiřitelný, obsahuje lepší možnosti úpravy vzhledu než XYZ a podobně. To vše může být pravda, ale výběr CMS je spíše subjektivní záležitostí, která podléhá požadavkům dané aplikace. Zde jsou určité kompromisy, které musíte řešit:

  • snadnost ovládání vs. možnosti systému
  • jednoduchá vs. flexibilní architektura kódu
  • specializovaný vs. obecný nástroj

Protože požadavky webové stránky považuji za nadřízené použité technologii nebo CMS, zvolil jsem systém, který vyniká především svou flexibilitou, třeba i za cenu pozvolnější křivky učení nebo ne tolik atraktivního výchozího vzhledu. Protože chci, aby mi CMS dlouhodobě sloužil a ne aby mě omezoval, zvolil jsem Drupal.

Přehled vlastností

  • Jak bylo řečeno, Drupal je naprogramován v PHP (podporuje verze 4 i 5) a oficiálně podporovanými databázemi jsou MySQL a PostgreSQL. Příjemným důsledkem je, že Drupal běží na prakticky každém hostingu.
  • Zcela zásadní vlastností je vysoká flexibilita. Drupal podporuje širokou škálu myslitelných webových aplikací, od osobních weblogů až po vysoce specializované korporátní systémy (podívejte se na případové studie nebo na galerii stránek). Drupal poskytuje vývojářům třetích stran API, díky němuž je možno rozšířit základní instalaci o prakticky jakoukoli funkčnost. Dokonce řada vestavěných věcí, jako například kategorizace obsahu nebo vyhledávání, je realizována tímto způsobem.
  • Dobře promyšlená architektura databáze. V centru dění stojí „node“ neboli jednotka obsahu – může to být příspěvek do blogu, anketní otázka, běžná stránka nebo i vlastní definovaný typ. Každý node může obsahovat komentáře, může být syndikován v RSS, může se zobrazovat různými způsoby, může být verzován a podobně. Výhodou tohoto návrhu je, že moduly mohou s obsahem pracovat jednotně.
  • Komentáře ke všemu. Je jedno, jaký typ obsahu píšete (viz předchozí bod), komentáře jsou dostupné vždy, když to jako administrátor povolíte. To je velmi užitečné pro komunitní weby nebo pro weby, které se snaží být se čtenářem v kontaktu. Komentáře mohou být „ploché“ nebo strukturované do vláken (toto nastavení může ovlivnit i návštěvník).
  • Přátelská URL. Základní funkčnost je samozřejmostí, Drupal dále umožňuje definování více aliasů k jedné stránce a po instalaci lokalizačního modulu není problém k překladům dané stránky používat lokalizované cesty, například /en/welcome-to-drupal/ a /cs/vitejte-v-drupalu/.
  • Úplná kontrola nad vzhledem. Drupal pro generování používá šablonovací systémy, přičemž je mu jedno, jaký systém je použit (podporuje jich několik a v případě potřeby lze přidat další). V aktuální verzi 4.7 se jako výchozí šablonovací systém používá PHPTemplate, kde je dynamický výstup generován přímo PHP vsuvkami, takže není potřeba učit se žádnou další syntaxi. Webdesigner může navíc snadno ovlivnit generování libovolného kousku HTML, ať už tento kód generuje jádro systému nebo nějaký modul třetí strany, takže například není problém změnit <input type="submit"> na <input type="image">.
  • Propracovaný systém autorizace uživatelů. Jádro i moduly třetích stran mohou definovat oprávnění, který daný uživatel musí mít, aby mohl vykonat určitou činnost.
  • Integrované vyhledávání s booleovskými operátory. Parametry indexování lze nastavit.
  • Drupal je schopen uchovávat historické verze veškerého obsahu, pokud si to budete přát. Tím implementuje jednu z nejzajímavějších vlastností wiki systémů.
  • RSS funguje zajímavým způsobem – pokud například zobrazuji stránku /category/1+2 (tedy veškerý obsah z kategorie 1 nebo 2, „AND“ by se zapsalo jako /category/1,2), stačí na konec přidat /feed a automaticky dostanu odpovídající RSS.
  • Globalizace a lokalizace jsou základním způsobem vestavěny – přímo po instalaci je podporována lokalizace uživatelského rozhraní. Pro plně vícejazyčné weby je potom k dispozici speciální modul.
  • Veškerá aktivita je monitorována a logována. Toho lze využít třeba pro jednoduché statistiky návštěvnosti (existují moduly pro vizualizaci statistik).
  • Kolem Drupalu existuje početná a aktivní komunita. Moduly se počítají na stovky a celá platforma je aktivně vyvíjena.

Vady na kráse

Ani Drupal samozřejmě není dokonalý. Zde je výčet věcí, které by někomu mohly vadit:

  • Drupal používá nezvyklou terminologii, která komplikuje začínajícím uživatelům úvodní sžití. Není to můj subjektivní názor, ale spíše běžné nářky na fóru Drupalu. „Díky modulu taxonomie můžete vytvořit slovník, v něm potom termíny a ty můžete přiřadit jednotlivým uzlům.“ Asi by bylo srozumitelnější říct „obsah může být zařazen do kategorií, které mohou být seskupeny do skupin kategorií“.
  • Drupal není napsán pomocí OOP. Částečně je důvodem jeho historie, protože ještě před pár lety na tom PHP nebylo s podporou OOP právě nejlépe, ale i v současnosti procedurální model vývojáři hájí. Tvrdí, že má pozitivní vliv na výkon, protože funkce lze includovat uvnitř funkcí, což s třídami dělat nelze. Navíc tvrdí, že třeba funkčnost skinování (tak, jak je udělaná v Drupalu) by se v PHP při použití objektů dělala daleko hůře. Přes tyto argumenty považuje hodně nově příchozích absenci OOP za značné mínus, protože co je v OOP zaběhlé a každému vývojáři známé, je v Drupalu vyřešeno nějakou konvencí, kterou se člověk nejdřív musí naučit. Z vlastní zkušenosti ale můžu říct, že po trochu bližším seznámení nedělá absence OOP žádné větší potíže. Zajímavým počtením na toto téma je článek Drupal Programming from an Object-Oriented Perspective.
  • Drupal v základní instalaci obsahuje málo graficky povedených skinů. Můžete si sice relativně snadno vytvořit vzhled vlastní, ale třeba taková Joomla přichází s lepšími výchozími skiny.
  • Zpočátku budete muset věnovat určité úsilí nalezení vhodných modulů. Drupal má k funkčnosti podobný přístup jako například Firefox – samotné jádro je relativně útlé a funkce se přidávají postupně podle potřeby uživatele. Toto není jednoznačně nevýhoda, mnoho lidí naopak modulární design označí za největší výhodu Drupalu, ale určitému bádání se prostě nevyhnete. Ve specifických případech vám mohou přijít vhod distribuce jako třeba DrupalED pro vzdělávací weby nebo CivicSpace pro obecné použití.

Souhrn

Cílem tohoto článku bylo podat o Drupalu základní informace a dát vám možnost si na něj udělat názor. Pokud chcete jednoduchý weblog, jděte do WordPressu, Nucleusu nebo do nějaké specializované služby. Pokud chcete pouze diskusní fórum, existují výborné specializované balíky. Pokud však potřebujete od každého trochu, očekáváte rozšíření svých požadavků na funkcionalitu nebo tvoříte web, který do žádné škatulky tak úplně nespadá, zvažte Drupal.

Odkazy a zdroje

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět