Eva Rázgová photo

Čeho se vyvarovat a jak to dělat správně. Přečtení vám zabere několik minut, ale ušetří vám dny, možná i týdny vašeho drahocenného času.

Neupravujte jádro, nahrané moduly ani témata vzhledu

Úprava těch částí softwaru, které jste si stáhli z Drupal.org, je zásadní chyba a v podstatě vám znemožní aktualizace (přišli byste o všechny změny), nebo z nich udělá zábavu na měsíc (než všechny změny dohledáte a znovu zapracujete).
Povolené (a smysluplné) jsou pouze změny v několika málo souborech, které potřebujete změnit při instalaci či deploymentu, tak, aby systém fungoval v konkrétním prostředí. Jedná se např. o settings.php, .htaccess nebo composer.json. Pokud aktualizace jádra obsahuje změny v těchto souborech, je to uvedeno v poznámkách k vydání příslušné verze. (Do nových souborů pak zapracujete vaše existující úpravy).
Jedinou výjimkou, kdy můžete upravit existující software, je vytvoření záplaty, která řeší chybu, optimálně takové záplaty, kterou poskytnete komunitě (skrze “issues” na Drupal.org).

Namísto úpravy existujících modulů pište vlastní. Existující moduly ovšem mají API (https://api.drupal.org/api/drupal, plus dokumentace k jednotlivým staženým modulům), které můžete (a měli byste) - použít. Všimněte si mimo jiného, že drupal má systém hooků, které umožní vašim modulům přetížit funkcionalitu těch existujících.

Jestliže chcete upravit vzhled (jinak než konfiguračně), máte dvě možnosti: vytvořit nové vlastní téma vzhledu, nebo vytvořit subtéma stávajícího tématu vzhledu. Obě varianty jsou správné a “plnohodnotné”, nicméně pro začátečníka bývá jednodušší začít odvození subtématu. Některá témata jsou již předpřipravena pro tvorbu subtémat a jsou v popisu označena jako base themes, často již nějaká subtémata obsahují (příkladem je téma Radix).

Při psaní kódu oddělujte logickou a prezentační vrstvu webu

Prezentační vrstva je ta část, kde se vypisuje nějaký výstup. V tématu vzhledu jsou to soubory s příponou html.twig (tzv. šablony - templates) a obvykle jsou v podadresáři templates. Tato vrstva neobsahuje PHP kód, nijak nezpracovává proměnné, pouze vypisuje již předem připravená data.
Logická vrstva (získávání hodnoty proměnných, vytváření nových proměnných, dotazy do databáze, apod.) patří pouze do:

  • souboru VASE_TEMA.theme
  • vašich vlastních modulů

Tip pro začátek: určitě se podívejte na tzv. preprocess funkce, které budou odpovědí na většinu otázek, které potřebujete řešit (v API Drupalu hledejte Theme system overview a pod ním Preprocessing for Template Files).

PHP kód rozhodně nepatří do žádných částí webu, které můžete uložit přes webové rozhraní. Veškeré možnosti, jak vložit PHP kód do webu skrze konfiguraci a formuláře (v Drupalu 8 jich zbylo naprosté minimum), považujte pouze za nástroj, jak rychle otestovat váš snippet. Nic takového ovšem nemá co dělat na produkčním webu.

Co se týče javascriptu, ten má místo v určených souborech / knihovnách opět ve vlastním tématu vzhledu či vlastním modulu. Stejně jako u PHP kódu se vyvarujte pokušení vkládat jej např. do uzlů či jiných částí webu konfiguračně.
 

Využívejte API Drupalu, dodržujte standardy a bezpečnost

Tento bod pochopitelně úzce souvisí s předchozím. Jednou z velkých předností Drupalu je “pořádek” a přehlednost kódu. Ať si stáhnete jakýkoli modul či téma z Drupal.org, najdete v něm společnou logiku a jako programátor se snadno zorientujete. Vděčíte za to propracovanému API a standardům Drupalu. Držet se jich i při psaní vlastního kódu je jednoznačně nejefektivnější cesta k úspěchu.

Samostatnou zmínku si zaslouží bezpečnostní standardy, které zahrnují instrukce pro konfiguraci webu i psaní kódu. Pravidel není mnoho a vyplatí se dodržovat je zcela striktně. Jedině tak můžete těžit z již tradičně vysoké úrovně bezpečnosti Drupalu. Smaozřejmostí by mělo být sledování (nejlépe automatický odběr) bezpečnostních aktualit.
 

Nevymýšlejte kolo - vylepšete ho

Na většinu otázek a problémů, na které narazíte, už v Drupalu existuje hotové řešení, obvykle v podobě modulu. Začněte tím, že ho prozkoumáte a použijete, nebo na něj navážete za pomoci jeho API. Vývojem vlastních řešení “za každou cenu” jen neefektivně pálíte čas a možná si tím přiděláváte i další zbytečnou práci (otázka kompatibility, integrace s jinými moduly, bezpečnosti) . S Drupalem dostáváte práci tisíců přispěvatelů, kteří se na tvorbě kódu podílejí, a dalších stovek špičkových vývojářů, kteří tuto práci revidují a schvalují oficiální verze ke stažení. Za této situace je lepší a zábavnější vymýšlet “vychytávky”, než znovu vyrábět základní díly. Pokud se vaše práce za čas objeví na Drupal.org., je to ten nejlepší scénář.
 

Autor: Eva Rázgová

Obsahová revize textu: Karel Majzlík

Úvodní obrázek: Petr Kratochvíl (public domain license)