V předchozí části jsme zkoumali architekturu Drupalu z ptačí perspektivy. Nyní naši perspektivu mírně upravíme a projdeme si hlavní subsystémy, které nabízí systém Drupal 7.

Témata vzhledu

Subsystém témat vzhledu jsme si uvedli výše, a protože se jím budeme zabývat později, nebudeme příliš zabíhat do podrobností. Existuje však několik věcí, které byste měli vědět hned na začátku. Zodpovědnost za stylování dané části dat se rozprostírá mezi jádro Drupalu, moduly a samotné aplikované téma vzhledu. Ačkoliv nebudete zasahovat do kódu jádra Drupalu, měli byste si uvědomovat, že vzhled dat můžete upravovat jak pomocí kódu tématu vzhledu, tak pomocí kódu modulu. V této knize se budeme zajímat především o kód modulu. Pracujeme hlavně s funkcemi a šablonami pro stylování definovanými v modulu. Obvykle je nejlepší způsob vydat se nejprve touto cestou – abychom zajistili, že každý modul umí měnit vzhled svých dat.

Nabídky

Systém Drupal neudržuje jen obsah, ale rovněž informace o uspořádání webových stránek. Uspořádává tedy vztahy mezi daty. K tomuto účelu používá v první řadě subsystém nabídek. Tento systém obsahuje rozhraní API pro generování, získávání a úpravu prvků popisujících strukturu webových stránek. Jednoduše řečeno – ovládá navigační nabídky systému.

Dva systémy nabídek?

Začínající vývojáři Drupalu se často nechají zmást skutečností, že přední řadič systému se nazývá směrovač nabídek. Tento systém se ale neshoduje se subsystémem nabídek. Zodpovídá totiž za mapování adres URL na funkce zpětného volání a vrátíme se k němu jindy.

Nabídky mají hierarchické uspořádání – tj. mají stromovou strukturu. Položka nabídky může mít více potomků, a ty zase můžou mít své potomky atd. Díky tomu můžeme rozčleňovat své webové stránky na části a podčásti.

Uzly

Pravděpodobně nejdůležitějším subsystémem je systém uzlů. V terminologii Drupalu je uzel kusem textového, publikovatelného obsahu. Může mít několik polí, ale většinou má název, tělo a různá pomocná data – například časové známky, stav publikování a údaje o autorovi.

Uzly jsou obsahem

V počítačové terminologii má často termín uzel zvláštní význam. Jeho definice v terminologii Drupalu se však liší – není to bod v grafu, ale spíše část obsahu. Možná si budete chtít představovat uzel raději jako strukturovaný dokument.

Převážná část systému uzlů se skrývá v modulu uzlu. Tento sofistikovaný modul nabízí přes deset háčků, což znamená, že ostatní moduly můžou spolupracovat (a také spolupracují) s modulem uzlu prostřednictvím implementací háčků. Protože uzly odpovídají za obsah webových stránek, pochopení systému uzlů je neodmyslitelnou dovedností vývojáře Drupalu. 

Bloky

Spousta webových stránek má kromě hlavního obsahu ještě dodatečný obsah zobrazený nahoře, dole nebo na bocích stránky. Drupal má subsystém bloků, jenž obsluhuje konfiguraci a zobrazování těchto jednotek s obsahem. Většina této funkčnosti se nachází v modulu block.

Soubory

V minulých verzích Drupalu nepracoval systém s externími soubory (zejména obrázky) přímo. Místo toho byla k dispozici přemíra modulů pro práci se soubory. To se ve verzi Drupal 7 změnilo a nyní má tento systém subsystém pro soubory. Z toho plyne, že práce s obrázky, dokumenty a jinými soubory se podstatně zjednodušila. Ačkoliv Drupal velmi dlouho dobu nabízel sadu nástrojů pro práci se souborovým systémem (v hlavní knihovně files.inc), nyní je dostupný také modul file. 

Uživatelé

Drupal nemá být pouze systémem pro správu obsahu, ale rovněž platformou pro sociální média. Co mají všechny tyto platformy společné, je robustní systém uživatelů, jenž nepodporuje jen administrativní uživatele, ale taktéž členy webových stránek. Drupal má právě takový subsystém uživatelů, který umožňuje vývojářům pracovat s téměř všemi aspekty životního cyklu uživatele – od zobrazování polí v uživatelském profilu, přes výběr povolení (na jemnozrnné úrovni) pro uživatele, až po výběr konkrétního šifrovacího schématu pro zašifrování hesla uživatele. Systém uživatelů poskytuje dokonce nástroje, které umožňují vytvářet zásuvnou autentizaci a jiné funkce správy uživatelů. Moduly nabízí kupříkladu integraci s protokolem LDAP a autentizaci skrz mnoho veřejně dostupných autentizačních služeb – například služby OpenID. 

Komentáře

Pravděpodobně nejběžnějším nástrojem sociálních médií jsou komentáře. Drupal obsahuje subsystém, jenž poskytuje funkčnost komentářů uzlům (a prostřednictvím rozšíření i dalším datovým typům). Přestože si lze komentáře představovat pouze jako další typ uzlu (a některé moduly to tak skutečně dělají), vývojáři Drupalu se rozhodli implementovat je jako samostatný typ. Modul comment obsahuje největší díl zdrojového kódu pro komentáře. Stejně jako u systému uzlů platí, že tento modul má početnou skupinu háčků, a tudíž ostatní moduly mohou spolupracovat se systémem komentářů.

Pole a entity

Ve starších verzích Drupalu představoval systém uzlů skutečně jedinou možnost, jak vytvářet strukturované kusy textového obsahu (komentáře jsou příliš specifické a snaží se rozšiřovat obsah). Abychom rozšířili obsah uzlu o více než jen jednoduchý název a pole v jeho těle, museli jsme buď napsat vlastní typy uzlu, nebo vytvořit typy uzlu pomocí sady CCK (Content Construction Kit).

Od verze Drupal 7 se však vše mění, jelikož zavádí dva významné subsystémy:

  • Systém polí přenáší většinu funkčnosti sady CCK do jádra Drupalu.
  • Systém entit umožňuje definovat další strukturované datové typy, které nejsou uzly.

Odezva na tyto nové systémy mezi vývojáři Drupalu na sebe nenechala dlouho čekat a již se objevil modul Drupal Commerce, jenž definuje sofistikované entity, které nejsou uzly. 

Rozhraní Forms API

Dalším nepřehlédnutelným subsystémem, jenž je součástí jádra Drupalu, je rozhraní Forms API (FAPI). Tento systém nabízí robustní programové nástroje pro definování, zobrazování, validování a odesílání formulářů. Provádí velkou část náročné práce s vývojem formulářů, a také přidává vrstvu zabezpečení. Rozhraní Forms API je natolik svázané s Drupalem, že jej použijeme na mnoha místech v této knize.

Instalační profily

Sofistikovanější projekty Drupalu těží ze schopnosti přizpůsobovat si instalační proces. Drupal poskytuje subsystém instalačních profilů, s jehož pomocí můžeme vytvářet vlastní instalátory. Díky tomu můžou vývojáři nastavovat vlastní témata vzhledu a moduly, měnit parametry instalace a vůbec si můžou zjednodušit proces instalace sofistikovaných webových stránek vytvořených v Drupalu.

Framework Simple Test

Programové testování zdrojového kódu je praxí osvědčeným postupem při vývoji softwaru. V systému Drupal 7 se jedná o schopnost hlavní distribuce. Díky frameworku Simple Test můžou vývojáři používat funkční testování a testování jednotek k validaci svého zdrojového kódu. V této knize budeme testovat na různých místech. 

Ostatní subsystémy

řekli jsme si o několika základních subsystémů, ale tento seznam není rozhodně vyčerpávající. Existuje spousta dalších subsystémů a dokonce i pár důležitých (například modul Views), které nejsou součástí jádra Drupalu. Na některé z nich narazíme v této knize. Drupal je však sofistikovaný systém a žádný rozumně dlouhý článek nemůže popsat všechny detaily.