Drupal ve výchozí instalaci obsahuje pouze základní funkčnost, kterou však lze velmi snadno rozšířit pomocí externích modulů. Rád bych vás proto upozornil na několik z těch, které považuji za zajímavé a především užitečné.

Moduly zmíněné v předchozích článcích

Na úvod stručně zrekapituluji moduly, které byly zmíněny a většinou též popsány v předchozích článcích:

Vyhledávání

Vyhledávání je na web možno přidat buď pomocí externí služby (Google, Jyxo a podobně) nebo nějakým interním mechanismem. Drupal k tomuto účelu používá vestavěný modul search, jehož použití je následující:

  1. Na stránce admin/modules povolte modul search.
  2. Pro pravidelnou indexaci obsahu je bezpodmínečně nutné občasné navštívení stránky http://example.com/cron.php, což vám může zařídit vaše webhostingová společnost, pokud cron nabízí. Pokud nikoli, je nejjednodušším řešením použít modul poormanscron, který bude fungovat na libovolném hostingu.
  3. Navštivte cestu admin/settings/search a v případě potřeby nastavte parametry vyhledávání. Asi nejzajímavější je možnost ovlivnit hodnocení (ranking) obsahu – můžete například nastavit, že novější příspěvky mají větší váhu než příspěvky s velkým počtem komentářů (nebo naopak).
  4. Nyní zbývá už jen zobrazení vyhledávacího políčka koncovému uživateli. Máte v zásadě dvě možnosti:
    • Povolit zobrazení vyhledávacího políčka v nastavení tématu (admin/themes/settings/název_tématu) – vyhledávací políčko se obvykle zobrazuje v záhlaví stránky. Některá témata (například bluemarine) tuto formu podporují, jiná (například chameleon) nikoli.
    • Univerzálně použitelným způsobem je zobrazení vyhledávacího bloku, který se zobrazí v postranním sloupci. Pro jeho aktivaci navštivte stránku admin/block a povolte blok Search form.

Vlastní typy obsahu – moduly CCK, Views a Contemplate

Drupal (na rozdíl od některých jiných CMS) klade velký důraz na kvalitní práci s obsahem. Terminologie proto zavádí pojmy jako node (jednotka obsahu), node type (typ obsahu) a podobně. Jako administrátor mohu například určit, že příspěvky do blogu (typ obsahu blog) mají mít přístupné komentáře, zatímco statické stránky (typ obsahu page) nikoli a že se navíc nemají objevovat v RSS exportech. Ačkoli tedy z laického pohledu statická stránka i příspěvek v blogu vypadají stejně – mají nadpis a nějaký obsah – z právě uvedených důvodů se vyplatí rozlišovat mezi typem obsahu blog a typem obsahu page. Navíc mohou existovat i „exotičtější“ typy obsahu, jako například anketa, obrázek a další.

Koncept různých typů obsahu je tedy důležitý a pro některé weby je výhodné nebo dokonce potřebné, aby si nový typ obsahu mohly definovat samy. Dříve bylo potřeba tuto situaci řešit vývojem vlastního modulu, ale v poslední době se do slušně stabilní podoby dostaly tři moduly, které flexibilitu obsahu zvyšují bez nutnosti programování v PHP. Jedná se o moduly CCK (Content Construction Kit), Views a Contemplate. Tyto moduly by vystačily na samostatný článek, proto jsem se spíše než technické detaily rozhodl popsat jejich účel na malé případové studii.

Na svém blogu jsem chtěl zprovoznit postranní box s odkazy na jiné zajímavé články, což lze nejsnáze řešit přímým zápisem do XHTML šablony nebo vytvořením XHTML bloku a jeho přímou editací. Toto řešení však není příliš uživatelsky přívětivé a navíc je problematické uchovávat historii odkazů, nabízet jejich RSS export a podobně. Výhodnější proto bylo vytvořit nový typ obsahu zajímavý odkaz, který má kromě povinného nadpisu také pole pro odkaz samotný a potom ještě pole pro nepovinný popis. S modulem CCK se jednalo o práci na pár minut – definovala se dvě textová pole, jejich název a popis a to bylo v podstatě vše. Při zadávání nového odkazu vypadá uživatelské rozhraní následovně:

Typ obsahu Zajímavý odkaz
Typ obsahu „Zajímavý odkaz“

Druhým krokem bylo vytvoření nového pohledu, který poskytuje jak stránkový pohled (borber.com/blog/zajimave-odkazy), tak blok využitelný v postranním sloupci na hlavní stránce (blok je nastaven tak, aby zobrazoval pět nejnovějších odkazů a aby obsahoval odkaz „více“ vedoucí na stránkový pohled). V definici pohledu lze nastavit celou řadu dalších věcí, jako například řazení, filtrování a podobně. Pružnost modulu Views je opravdu velká.

Posledním krokem je upravení výchozího výstupu, který modul CCK při zobrazení určitého typu obsahu generuje. Pokud se podíváte například na zobrazení jednoho nódu typu zajímavý odkaz, uvidíte, že ve výchozím stavu generuje zbytečné a nepěkné texty „Link“ a „Link description“. Řešením je modul Contemplate, který k typu obsahu umožňuje přiřadit šablonu. U zajímavých odkazů jsem zobrazení nódu neřešil, protože návštěvník stejně nemá žádnou možnost se na tuto stránku proklikat (musel by zadat přesné URL), ale třeba u typu obsahu „školní práce“ úpravu generovaného kódu používám a bez ní by to v podstatě nešlo.

Ve vzájemné kombinaci tedy tyto tři moduly výrazně zvyšují užitnou hodnotu Drupalu a je dost dobře možné, že ovlivní budoucnost Drupalu – o integraci CCK do základního balíku se uvažuje a časem by měly být nahrazeny překonané moduly blog, story a další podobné.

Modul category

Základním úkolem většiny webů je vytvoření navigace a kategorizace obsahu. V tomto ohledu existuje v komunitě Drupalu určitý rozkol – jedna skupina považuje klasifikační možnosti Drupalu za výjimečně pružné a kvalitní, zatímco druhá je považuje za příliš složité a uživatelsky nepřívětivé. Vestavěné kategorizační možnosti skutečně trpí některými problémy – je používána velmi nepřirozená terminologie (pojmy taxonomie, slovník nebo termín nejsou pro začátečníky vůbec intuitivní), kategorie není nódem a je tak například hůře lokalizovatelná, nelze na ni aplikovat běžné atributy jiných jednotek obsahu a podobně. Největší výhradou však bývá, že i pro relativně jednoduché weby je obtížné navrhnout kategorizaci obsahu „správně“, tedy vybrat ty správné moduly, udělat správná architektonická rozhodnutí a podobně. Proto vznikl modul category, který si velmi rychle získal oblibu a vyřešil většinu zmíněných problémů.

Modul category přináší tyto zásadní vlastnosti:

  • Byla spojena funkčnost modulů book a taxonomy. První sloužil k vytváření hierarchické struktury webu (o podivné terminologii už řeč byla…), zatímco druhý ke kategorizaci obsahu. Toto rozdělení způsobovalo mnoho praktických problémů.
  • Kategorie i jejich kontejnery jsou v této implementaci běžnými jednotkami obsahu (nódy).
  • Modul se snaží o maximální kompatibilitu se starým kategorizačním systémem. Projekt obsahuje „wrapper“ moduly, které zajišťují přesměrování požadavků na odpovídající funkce modulu category.

Osobně vám tedy modul category mohu jedině doporučit (do začátků je dobrým materiálem oficiální tutoriál), pouze je v současnosti nutno počítat s některými chybami, které zatím nebyly opraveny. Podle vyjádření autora modulu by většina z nich měla být odstraněna do konce roku 2006, podle vlastní zkušenosti však mohu říci, že modul lze prakticky bez problémů používat už dnes.

Překlad obsahu do jiného jazyka

Globalizace a lokalizace je pro kvalitní CMS nutností a počeštění uživatelského rozhraní Drupalu bylo ukázáno hned v jednom z úvodních článků. Co však Drupal ve výchozím nastavení neobsahuje, je podpora lokalizace obsahu. Tu zajišťuje modul Internationalization (i18n).

Základní práce s ním je poměrně přímočará:

  1. Modul tradičním způsobem nainstalujte. Projekt Internationalization je spíše balíčkem několika modulů, takže kromě modulu i18n nezpomeňte povolit i doprovodné moduly, především translation. Musíte rovněž povolit modul locale.
  2. Na stránce admin/locale přidejte jazyky, pro které má existovat lokalizovaný obsah.
  3. Pro typy obsahu, které mají být lokalizovatelné, navštivte jejich nastavení (admin/settings/content-types) a Multilingual support změňte na Enabled.
  4. Běžným způsobem vytvořte jednotku obsahu, například stránku. Po jejím uložení budete mít možnost přejít na záložku Translation, kde lze definovat překlad pro všechny podporované jazyky.

V praxi se setkáte s celou řadou problémů, které budete muset překonat, například skoro určitě budete chtít změnit výchozí adresy typu en/welcome a cs/welcome tak, aby adresa české stránky byla cs/vitejte, nebo budete chtít lokalizovat položky menu a podobně. V tom případě vám doporučuji prostudovat třeba článek Getting the whole thing to work, kde je řešení nejčastějších požadavků popsáno.

Další moduly ve zkratce

Možnosti nasazení Drupalu jsou široké a nelze tak popsat všechny myslitelné moduly, kterých existují stovky. V krátkosti bych tedy chtěl zmínit alespoň přehled několika dalších, které by se vám mohly hodit:

  • Forum – umožňuje vytvořit diskusní fórum; zde přijdou vhod doplňkové moduly jako quote, bbcode a další
  • Gallery – integruje aplikaci Gallery2
  • Bad Behavior – brání webovou stránku před spamboty a jiným škodlivým software
  • Google Sitemap – vytváří XML soubor pro Google
  • Excerpt – umožňuje definovat vlastní shrnutí článku, které se může lišit od začátku samotného textu
  • Subscriptions – posílá upomínky e-mailem při přidání nového diskusního příspěvku do vlákna, při přidání nového komentáře v blogu a podobně

O další užitečné moduly se s ostatními můžete podělit v komentářích – všichni se rádi dozvíme něco nového.

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