V této části použijeme veškerou dosavadní teorii na velmi jednoduchém praktickém příkladu - tvorbě prezentačního webu firmy.
Připomeňme, že vycházíme z čisté instalace Drupalu 8.4.x, z profilu “standard”. Příklad jsme koncipovali tak, abychom se dotkli všeho podstatného z předchozích částí, avšak při “snesitelném” počtu kroků a rozumné délce textu. Cílem není podrobný návod na tvorbu webu.
Instalace, soubory, databáze
K instalaci jste potřebovali nově vytvořenou (prázdnou) databázi a soubory Drupalu. Údaje pro spojení s databází, které jste při instalaci zadali, Drupal automaticky zapsal do konfiguračního souboru settings.php
v adresáři /sites/default
. Při instalaci jste zvolili jeden ze dvou dostupných instalačních profilů (/core/profiles
), které jsou součástí jádra (/core
), v tomto případě profil standard.
Moduly
Po instalaci přejděte na web do části Správa > Rozšíření (Manage > Extend, /admin/modules
). Zde vidíte přehled momentálně dostupných modulů, které ovlivňují funkcionalitu. V části Vzhled (Appearance, /admin/appearance
) je přehled témat vzhledu. V tuto chvíli pracujete pouze s jádrem - vše, co vidíte na uvedených stránkách, je tedy součástí adresářů /core/modules
, resp. /core/themes
.Použitý profil (zde standard) určuje, které moduly a témata vzhledu se používají, a ovlivňuje některá další výchozí nastavení, týkající se např. bloků nebo menu.
Určitě se neobejdete bez rozšiřujících modulů a témat vzhledu, která patří do adresářů /modules
, resp. /themes
. V adresáři /modules
nyní ručně vytvořte 2 podadresáře: custom
(pro vaše budoucí vlastní moduly) a contrib
pro moduly stažené z Drupal.org. Nyní instalujte jeden z nejpoužívajnějších contrib modulů - Admin Toolbar. Modul poskytuje rozbalovací administrační panel nástrojů, což usnadní a zrychlí veškerou další práci. Příklad stažení a instalace s použitím Drushe vypadá následovně (Drush automaticky rozpozná ručně vytvořený adresář /modules/contrib
):
drush dl admin_toolbar
drush en admin_toolbar
Modul uvidíte na webu v přehledu modulů na adrese /admin/modules
, ve skupině Administrace (Administration). Skupina, kam je modul řazen, je určena v kódu modulu v souboru *.info.yml
- v tomto případě je zde uvedeno package: Administration
. Pokud budete později vytvářet vlastní moduly, umístíte je do adresáře /modules/custom
. V souboru *.info.yml
se u vlastních modulů často uvádí package: Custom
, není to však nutností - vlastní moduly si můžete roztřídit do libovolných skupin, tak, aby to pro vás bylo co nejpřehlednější.
Témata vzhledu
Na stránce s přehledem témat vzheldu (/admin/appearance
) vidíte, že výchozím použitým tématem vzhledu je Bartik a administračním tématem vzhledu Seven. Vyzkoušejte si použití dvou contrib témat vzhledu Bootstrap a Adminimal. Obě umístěte do adresáře /themes/contrib
a instalujte. V administraci (/admin/appearance
) vidíte, že je rozdíl mezi tím, zda je téma pouze instalováno, nebo zda se skutečně “k něčemu používá”. Nastavte téma Bootstrap jako výchozí (Nastavit jako výchozí - Set as default) a téma Adminimal jako Téma vzhledu administrace (Administration theme). Zkontrolujte výsledek (změnu vzhledu např. na homepage a v některé části administrace). V praxi byste buďto vytvářeli podtéma (subtheme) zvoleného contrib tématu, které byste přizpůsobili zadání a designu webu, nebo vytvořili zcela nové (custom) téma vzhledu a umístili ho do složky /themes/custom. V obou případech můžete dosáhnout vzhledu, který bude přesně odpovídat designu, jaký potřebujete. Zda bude méně pracné přizpůsobit subtheme, nebo vytvořit vlastní (custom) téma vzheldu, záleží na konkrétním zadání a samozřejmě i na vašich zkušenostech. V tuto chvíli se ovšem tvorbě tématu do hloubky věnovat nebudeme, proto změňte nastavení zpět na původní - výchozí téma vzhledu Bartik a administrační Seven.
Pokud se rozhodnete, že nějaký modul nebo téma vzhledu již nebudete používat, a chcete ho odstranit ze souborového systému, musíte ho vždy nejdřív odinstalovat.
Uzly
Čistá instalace Drupalu nemá žádný obsah, tj. žádné uzly (nody); připomeňme si, že uzel je pouze jeden z typů entit. Přehled existujících uzlů je na adrese /admin/content
- po instalaci je prázdný. Pro vytváření obsahu (uzlů) nabízí nabízí Drupal dva výchozí typy obsahu (content types). Obecněji vzato jsou to bundles v rámci daného typu entity. Výchozí typy obsahu jsou článek (article) a základní stránka (basic page).
Nyní vytvořte uzel typu základní stránka (/node/add/page
), dejte mu název “O nás”, vložte do něj nějaký pokusný obsah a rovnou vytvořte i položku menu: v pravé části editačního formuláře v Nastavení menu
(Menu settings) je defaultně k dipozici menu Hlavní navigace (Main navigation). Uložte. Stejným způsobem (/node/add/page
) vytvořte uzel s názvem “Kontakty” a zatím nepřidávejte do menu. Na stránce administrace menu Hlavní navigace (/admin/structure/menu/manage/main
) si můžete ověřit, že stránka “O nás” tam již je. Stránku “Kontakty” můžete z tohoto místa do menu nově přidat, s použitím našeptávače. Pořadí položek menu pak můžete dle potřeby změnit za pomoci drag and drop rozhraní; změny je nutné vždy uložit.
Podobným způsobem vytvořte několik pokusných uzlů typu článek (/node/add/article
), tyto uzly nezařazujte do menu. Článek má oproti základní stránce některá odlišná pole: máte zde navíc k dispozici štítky (tags) a pole pro obrázek (image). Vyplňte všechna dostupná pole.
Při vyplňování pole pro štítky můžete buďto zvolit existující (na začátku ale žádné nejsou k dispozici), nebo zadat nové (systém je automaticky uloží do seznamu pro výběr). Ve druhém případě rovnou vytváříte entity zcela jiného typu, a sice termíny taxonomie (později se na ně ještě podíváme).
Po vytvoření uzlu uvidíte, že k němu můžete přidat komentář (to je další typ entity).
Zůstaňme však ještě u uzlů. Zatím jste se pohybovali v části administrace, kde můžete přidávat nové uzly, přičemž jste pouze používali dostupné typy obsahu tak, jak je nabízí jádro. Nyní se přesuňte do části, kde můžete upravovat stávající a přidávat další vlastní typy obsahu (/admin/structure/types
). I zde jsou rozdíly mezi oběma typy obsahu dobře patrné, zejména v části správy polí (Manage fields): admin/structure/types/manage/page/fields
vs. admin/structure/types/manage/article/fields
.
Na stránce admin/structure/types
nyní přidejte nový vlastní typ obsahu - Reference (strojový název reference
), který bude mít - pro jednoduchost - pouze pole Text (Body), které vám systém nabízí jako defaultní (v reálné situaci byste pro tento typ obsahu pravděpodobně přidali další pole, případně s využitím různých contrib modulů). Při vytváření typu obsahu ponechte všechna výchozí nastavení. Pak vytvořte 2-3 uzly typu Reference (/node/add/reference
), zadejte pokusný text, ostatní hodnoty opět ponechte ve výchozím stavu.
Pohledy (views), menu
Nyní se podívejte na homepage. Pokud jste následovali výše uvedený postup, uvidíte zde všechny uzly typu článek i reference, které jste vytvořili, nikoli však uzly typu základní stránka. Asi si vzpomenete, že homepage je výstupem pohledu (view) s názvem Titulní strana (Frontpage), který jsme si zběžně prohlíželi ve 3. části. Nyní se můžete znovu podívat na to, proč se na homepage zobrazuje právě to, co tam vidíte, ale také, jak to změnit. Pohled se strojovým názvem frontpage
(/admin/structure/views/view/frontpage
) vypisuje obsah (uzly), respektive jejich část (v tomto případě úvodník), které splňují 3 podmínky (filtry): mají nastaveno zobrazení na titulní straně, jsou vydané a jejich jazyk se shoduje s jazykem, ve kterém si uživatel právě prohlíží příslušnou stránku (URL adresu). Uzly jsou vypisovány v určitém pořadí: řadí se podle času, kdy byly vytvořeny, a to sestupně. Tomu je však “předřazeno” ještě jedno kritérium, vlastnost “Přilepit nahoru v seznamu” (je to jeden z checkboxů, které máte při vytváření uzlu standardně k dispozici).
Na homepage se ve vašem případě zobrazují všechny články a reference, protože oba typy obsahu mají defaultně nastaveno Zobrazit na titulní straně a všechny uzly jste s tímto nastavením uložili. Nyní si představte zadání, kdy budete chtít výpis rozdělit: na homepage zobrazovat pouze články, zatímco reference přesunout na jinou adresu. Lze to udělat několika způsoby, nejsprávnější (z hlediska srozumitelné architektury webu, dokumentace apod.) bude změnit nastavení u typu obsahu reference. Důležité je, že musíte upravit jak výchozí chování nových uzlů (v editaci typu obsahu na adrese /admin/structure/types/manage/reference
, záložka Možnosti vydání), tak nastavení již vytvořených uzlů (v přehledu obsahu /admin/content
můžete některé vlastnosti uzlů měnit hromadně). Po provedených změnách už na homepage uvidíte jen články, neboť uzly typu reference nebudou vyhovovat filtrovacím kritériím pohledu). Teď ještě potřebujete vytvořit jinou stránku, která bude zobrazovat reference. Můžete vytvořit nový pohled (view), pro jednoduchost však nyní můžete duplikovat (duplicate) stávající view a upravit jen části, které potřebujete (v praxi se tato možnost často používá a šetří hodně práce). V přehledu všech views tedy u pohledu Titulní strana vyberte z dostupných operací možnost duplikovat a hned v následujícím kroku nový pohled přejmenujte na Reference (strojový název reference
).
Po potvrzení (opět tlačítko Duplikovat) je nový pohled uložený. Zatím má všechny vlastnosti shodné s pohledem Titulní strana, který jste použili jako vzor. Nejdříve upravte URL adresu (Nastavení stránky), protože dva pohledy se stejnou URL adresou nemohou současně fungovat (systém si vždy vybere jen jeden z nich). Adresu změňte na /reference
1) a rovnou nastavte také umístění odkazu v menu: zvolte Normální záznam v menu a doplňte požadované údaje (název odkazu - Reference, ponechte výchozí nabízené menu - Hlavní navigace). Pohled uložte.
Z dalších nastavení potřebujete upravit především filtry. Odstraňte filtr pro vlastnost “Zobrazit na titulní stránce”, který zde nedává smysl, protože již nepracujete s homepage. Pod formulářem, kde provádíte konfiguraci, vidíte náhled (preview), který se mění pokaždé, když změníte nastavení. V tuto chvíli pohled vypisuje všechny uzly, které na webu máte. To ale nechcete, proto přidejte nový filtr pro Typ obsahu a zvolte Reference; potvrďte tlačítkem Použít. Na náhledu ve spodní části stránky byste měli vidět, že výsledek již odpovídá zadání, poslední změny provedené v pohledu však musíte opět uložit. Na nové URL adrese, kterou jste vytvořili (/reference
) byste měli vidět požadovaný výsledek (vypsaný přehled uzlů typu reference) a také to, že odkaz s názvem Reference se nově objevil v hlavní navigaci. Na stránce nastavení tohoto menu (admin/structure/menu/manage/main
) můžete změnit pořadí položek. Všimněte si, že položku menu, kterou jste vytvořili přímo v pohledu, můžete vypnout nebo upravit, ale nikoli smazat (museli byste ji odstranit z pohledu). Pokud byste ovšem nastavení menu v pohledu neprovedete a odkaz zadáte až později z administrace menu (můžete si vyzkoušet), získáte odkaz, který můžete později smazat.
Vytvořit položku menu již v momentě, kdy zakládáte novou URL adresu, je možné jen v některých případech, jako je právě vytvoření uzlu nebo view. Naproti tomu při vytváření taxonomického termínu nebo uživatele Drupal tuto možnost nenabízí. Vždy je však možné přidávat odkazy z adresy správy konkrétního menu (/admin/structure/menu/manage/strojovy-nazev-menu
), přičemž jako odkaz zadáte již existující relativní 2) adresu v Drupalu.
Bloky
Ve 3. části tutoriálu jsme uvedli, že výstupem pohledů mohou být i bloky. Použijeme pro jednoduchost opět na hotový příklad: v administraci bloků (/admin/structure/block
) v regionu Sidebar first klikněte na tlačítko Umístit block (Place block), vyberte Nový obsah (Recent content) a uložte. V levém postranním sloupci na frontendu (v tématu Bartik) se objeví blok, který je výstupem pohledu Nový obsah (strojový název content_recent
). V praxi byste ho pravděpodobně upravili třeba tak, aby obsahoval jen 3 nejnovější články (úprava v administraci view, admin/structure/views/view/content_recent/edit
) a aby se zobrazoval jen mimo titulní stránku, protože na homepage už články jsou (úprava vlastnosti Viditelnost - Visibility, záložka Stránky - Pages v konfiguraci bloku, admin/structure/block/manage/views_block__content_recent_block_1
).
Nyní vytvořte ručně nový vlastní blok - v části /admin/structure/block/block-content
. Nazvěte ho “Copyright”, vložte do něj text a uložte. Na stránce /admin/structure/block
pak blok umístěte (Place block) do regionu Footer fifth a na frontendu si prohlédněte výsledek. Připomeňme, že blok je také entita a má bundles (typy bloků), spravovat je můžete na adrese /admin/structure/block/block-content/types
; využijete to však pravděpodobně jen u komplexnějších projektů.
Taxonomie
Podívejme se stručně ještě na další entity, které jste vytvořili - termíny taxonomie. Na stránce správy taxonomie (v češtině Struktura > Kategorie, v angličtině Structure > Taxonomy, admin/structure/taxonomy
) je přehled dostupných slovníků (připomeňme, že jsou to bundles v rámci daného typu entity). Po instalaci je zde jeden slovník (Štítky - Tags), další vlastní můžete vytvořit. Termíny rovněž mohou mít pole, výchozí slovník Štítky však žádná neobsahuje - jednotlivé entity mají zatím pouze název. Jednotlivé entity (termíny taxonomie), které jste vytvořili, vidíte v přehledu na adrese admin/structure/taxonomy/manage/tags/overview
. Když na nějaký termín kliknete, dostanete přehled obsahu (v tomto případě článků a referencí), kterému jste příslušný tag přiřadili. Jak už možná tušíte, za tento výpis je opět zodpovědný pohled (view), a sice Termín taxonomie (Taxonomy term, strojově taxonomy_term
, /admin/structure/views/view/taxonomy_term
). Logika pohledu je trochu složitější, protože nepoužívá pevně danou URL adresu, ale výstupy filtruje dynamicky podle části URL, v tomto případě čísla taxonomického termínu (stránky jednotlivých termínů mají adresy /taxonomy/term/1
, /taxonomy/term/2
atd, viz též přehled typů entit ve 2. dílu). Na adresu tohoto pohledu se dostanete i z homepage, když kliknete na nějaký štítek zadaný u článku. Podrobnější výklad přesahuje rámec tohoto textu, je to však ukázka silného nástroje pro dynamické filtrování obsahu v Drupalu (v konkrétním pohledu najdete nastavení v části Pokročilé > Kontextuální filtry). Jakmile si jej osvojíte, budete jej pravděpodobně často využívat.
Backend na míru? Žádný problém.
Na konec se zmíníme ještě o jedné silné stránce Drupalu. Většina přehledů entit, které používáte v administraci (např. přehled uzlů na adrese /admin/content
, přehled komentářů - /admin/content/comment
, přehled uživatelů - /admin/people
a přehled vámi vytvořených bloků - /admin/structure/block/block-content
) je také výstupem modulu view. To znamená, že i administraci si můžete velmi snadno přizpůsobit na míru svým potřebám, dokonce můžete vytvářet nová vlastní administrační view, určená například jen redaktorům spravujícím určitou část webu.
Ve čtyřech částech tutoriálu jste se seznámili s nejdůležitějšími stavebními kameny Drupalu a dostali jste malou ochutnávku toho, co tento systém umí. Při práci budete postupně objevovat další skvělé nástroje, nemluvě o možnostech, které vám Drupal nabízí v programátorské oblasti. Protože je ale napříč celým Drupalem pořádek a jednotná logika, všechno, co se v budoucnu naučíte, perfektně zapadne do znalostí, které máte už teď.
1) Název pohledu (view) ani jeho URL adresa samozřejmě vůbec nesouvisí s typem obsahu, který vypisuje, je zcela na vás, jaký název a adresu zvolíte.
2) Pro odkazy uvnitř jednoho webu používejte vždy relativní adresy. Použití absolutní adresy je velkou chybou, která vám zkomplikuje práci např. ve chvíli, kdy pracujete s vývojovou kopií webu.
Autor: Eva Rázgová
Obsahová revize textu: Jan Nagy, Petr Illek, Josef Růžička
Úvodní obrázek: Robert Zunikoff (public domain license)