Kapitola 8

Správa webu

V této kapitole:

• Správa uživatelů

• Úprava uživatelských profilů pomocí políček

• Ukrytí přihlašovacího formuláře

• Aktualizace Drupalu

• Hledání a řešení problémů

• Upgrade Drupalu v kostce

• Instalace doplňkových modulů a témat

• Zálohování webu

• Přesun webu z počítače na internet nebo mezi servery

Správa uživatelů

I když budete vyvářet webové stránky typu firemní nebo osobní prezentace, věnujte pozornost nastavení uživatelských účtů v Drupalu, byť budete pracovat jen s uživatelem, kterého jste vytvořili při instalaci Drupalu coby administrátora webu. Od nastavení obsluhy uživatelských účtů v Drupalu se totiž odvíjí způsob, jakým bude Drupal ochráněn, i to, co svým uživatelům umožní.

Určitě nebudete chtít, aby se do firemního webu registrovali noví uživatelé, aby zde zakládali nějaký obsah, případně aby psali své komentáře. Naopak u webového magazínu zase ve většině případů registraci uživatelů povolíte, ale budete chtít mít kontrolu nad tím, kdo může pracovat s obsahem, kdo s komentáři, kdo se samotnými uživateli. V případě větších projektů pak budete chtít řídit, který z redaktorů bude mít jaké pravomoci.

Platí tedy, že na jakémkoli typu webových stránek s Drupalem byste měli alespoň jednou po instalaci nastavit základní uživatelská oprávnění a vůbec způsob práce s uživateli. Při tvorbě webů na Drupalu se mi osvědčil následující způsob nastavení uživatelů a souvisejících věcí:

• Nastavení možnosti registrace uživatelů

• Úprava e-mailových zpráv, které uživatelům chodí při různých příležitostech

• Po dokončení funkční části webu příprava uživatelských rolí a nastavení oprávnění

• Pokud kdykoli později přidáte nový modul, okamžitá kontrola jím poskytovaných oprávnění a jejich úprava

Základní nastavení uživatelů

Rozhodnutí, zda se do webu budou moci registrovat další uživatelé, mimo administrátora, který Drupal nainstaloval, učiníte v administrační sekci Nastavení −› Uživatelé −› Nastavení účtu. Zde uvedené volby jsme jednu po druhé probrali v kapitole o modulu User. Z hlediska zpřístupnění registrace vás bude zajímat volba Kdo může zřizovat účty:

• Pouze administrátoři – vhodné pro firemní web, kdy pracujete s jedním uživatelem nebo dalšími správci, které ručně přidáte přes administrační část Uživatelé −› Přidat uživatele. Toto nastavení znepřístupní vnitřní adresu /user/register.

• Návštěvníci – běžný režim, kdy se na adrese /user/register, na kterou odkazuje i přihlašovací formulář, může kdokoli zaregistrovat a po přihlášení získá uživatelskou roli Přihlášený uživatel.

• Návštěvníci, ale vyžaduje schválení administrátorem – určitá kombinace předchozích dvou voleb, kdy se sice může registrovat kdokoli, ale účet bude aktivní jen pro toho, koho schválí administrátor.

Poznámka: Poslední volbu jsem v praxi použils asi jen jednou u speciálního webu, kde bylo fórum pro omezený okruh lidí, kteří se zaregistrovali sami, ale aktivovat je mohl jen provozovatel webu.

Tip: V této části nastavení věnujte pozornost také volbě Vyžadovat ověření e-mailu při vytvoření uživatelského účtu. Odfiltrujete tak část uživatelských účtů vytvořených spamovacími roboty. Účty sice vzniknou, ale nebudou aktivní. V přehledu Uživatelé můžete jednou za čas hromadně promazat všechny účty, které nikdo nevyužil k přihlášení po delší dobu.

Obrázek 8.1 Nastavení registrace a rušení uživatelských účtů

V sekci E-maily ještě překontrolujte šablony odesílaných e-mailů. Jsou psány obecně tak, aby vyhovovaly většině webů beze změny, ale troška personifikace rozhodně neuškodí.

Samotnou správu konkrétního uživatele provádíte tak, že přejdete na administrační stránku Uživatelé a kliknete na odkaz Upravit u vybraného uživatelského profilu. V jeho editaci můžete uživateli změnit heslo, e-mail, jméno a vlastně všechny údaje, které vyplnil. Rovněž je zde volba Stav, kde zapnete, zda bude uživatel Zablokován nebo Aktivní. Jinými slovy zde schvalujete uživatele po jejich registraci, která vyžaduje potvrzení administrátora, viz výše.

Obrázek 8.2 Úprava uživatelského účtu

Tip: Z Drupalu 8 sice zmizel modul OpenID, umožňující přihlášení přes identitu Open ID, ale nezmizely možnosti přihlašování přes aplikace třetích stran. V době psaní knihy netuším, jaké moduly budou pro Drupal 8 dostupné, nicméně pro Drupal 7 existovala spousta řešení umožňujících přihlašování do webu přes Facebook, Twitter, Google a další služby. Nejvíce mě zaujal asi modul HybridAuth Social Login (drupal.org/project/hybridauth).

Uživatelské role

Pravomoci v Drupalu jsou rozděleny na základě uživatelských rolí. Každý uživatel v určitou chvíli vystupuje v nějaké roli a od ní se odvíjejí oprávnění k různým částem webu. Dokonce i náhodný návštěvník, který na web zavítá z vyhledávače, má uživatelskou roli – tou základní je totiž Anonym. Naopak každý, kdo je zaregistrován a přihlásí se, ihned dostane roli s názvem Přihlášený uživatel (Authenticated user).

Ve výčtu základních uživatelských rolí v Drupalu 8 je ještě Administrátor. Tato role je automaticky přiřazena uživateli, který byl vytvořen při instalaci Drupalu, a je tedy hlavním správcem webu. Pomocí sekce Uživatelé můžete samozřejmě vytvořit další uživatelské účty a nastavit jim roli administrátora.

Uživatelských rolí v Drupalu může být libovolné množství. Zaregistrované uživatele do nich ale musí přesunout administrátor nebo někdo mající oprávnění pro správu uživatelských účtů. Učiní to jednoduše – vstoupí do editačního formuláře pro úpravu uživatele a zapne jednotlivé role, do kterých má být daný uživatel zařazen.

Počet uživatelských rolí zvolte s rozmyslem. Pokud na webu pracujete sami, vystačíte si s výchozími třemi a sebou jako administrátorem. Jestliže na firemním webu pracuje více lidí (novinkáři, blogeři, plniči produktů), vytvořte jim takové role, které odpovídají potřebě odlišit jejich pravomoci (například nechcete, aby blogeři mohli vkládat jiný obsah než příspěvky do blogu, novinkáři zase mohou měnit jen jiný typ obsahu).

Celý postup by měl být následující:

1. Přejděte do administrační sekce Uživatelé a přepněte se na kartu Role.

2. V přehledu rolí přidejte všechny uživatelské role, které jste se rozhodli definovat.

3. Upravte pořadí rolí tak, aby ty s nejmenšími oprávněními byly nahoře, dole naopak budou správcovské role.

4. Pořadí rolí po jeho změně nezapomeňte uložit.

5. Přepněte se na kartu Uživatelé −› Oprávnění a nastavte práva jednotlivým rolím.

Poznámka: Popisy jednotlivých oprávnění najdete zmíněné v kapitole s přehledem modulů v jádře Drupalu.

Obrázek 8.3 Výchozí uživatelské role v Drupalu

Proč je důležité nastavit pořadí uživatelských rolí od nejméně vybavené k administrátorům? Každý uživatel totiž může být zařazen do více rolí a podle toho může dědit oprávnění. Při nevhodném uspořádání by tato dědičnost nemusela správně fungovat. Osobně se weby snažím stavět tak, aby uživatelé nemuseli být ve více rolích.

Tip: Existují samozřejmě doplňkové moduly, které mohou uživatele přesouvat do vyšších rolí automaticky na základě různých kritérií. Nejpokročilejší je zřejmě modul Rules (drupal.org/project/rules), ve kterém definujete různá pravidla stylem když… tak…

Jak na nepohodlné návštěvníky

Uživatele, kteří porušují pravidla vašeho webu, pravidelně píší ofenzivní komentáře či vkládají svou reklamu do diskuzního fóra, asi budete chtít nějakým způsobem zkrotit. V základní podobě Drupalu 8 k tomu máte prakticky dva nástroje:

• Tím prvním je ruční úprava uživatelského účtu a nastavení jeho Stavu na Zablokován

• Druhou možností je zablokování přístupu z vybraných IP adres, a to pomocí administrační části Nastavení −› Uživatelé −› IP address bans

Poznámka: IP adresy uživatelů zjistíte například z logu přístupů.

Doporučuji rovněž vytvořit stránku s pravidly pro registraci webu a podmínkami použití. Odkaz na tuto stránku nebo rovnou celý text můžete doplnit na registrační stránku ve formě Bloku, kterému nastavíte viditelnost omezenou jen na adresu /user/register. Blok pak umístíte do regionu Obsah, aby byl vidět hned pod formulářem. Nebo nad ním.

Obrázek 8.4 Formulář pro zadání IP adresy, které chcete blokovat přístup na web

Jak hromadně odhlásit všechny uživatele

Při větších změnách na webu může být někdy užitečné na dálku odhlásit všechny uživatele. Složitější cestou, jak toho docílit, je vyprázdnění (pozor, nikoli smazání) databázové tabulky sessions. O něco jednodušší je použití specializovaného modulu, jako je například Automated Logout (drupal.org/project/autologout).

Úprava uživatelských profilů pomocí políček

V základním nastavení mohou uživatelé v Drupalu 8 vyplňovat kromě svých přihlašovacích údajů i obrázek. Budete-li komunitní web, pak toto nastavení rozhodně nestačí. Budete chtít přidat zobrazování informací o uživateli, jako jeho popis, odkaz na domovskou stránku, odkazy na jeho profily na sociálních sítích a podobně.

Všechno tohle je v Drupalu samozřejmě možné a dobrá zpráva je, že v Drupalu 8 pro vytvoření bohatého uživatelského profilu ani nepotřebujete žádný doplňkový modul, který byste se museli učit. Uživatel je totiž entita, stejně jako obsah. Stačí vám tedy znalost práce s políčky.

Políčka uživatelských profilů a fotka uživatele

V sekci Nastavení −› Uživatelé −› Nastavení účtu se přepněte na kartu Správa polí. Zde uvidíte již dobře známý přehled políček, podobně jako u definice typu obsahu. Zde jsou jen svázána s uživatelem. Standardní instalace Drupalu 8 vytvoří jedno připravené uživatelské políčko – Obrázek. To je určeno k nahrávání fotky uživatele. Klepněte na jeho odkaz Upravit.

Obrázek 8.5 Nastavení pole pro nahrávání fotografie uživatele

1. Podle libosti upravte popisek k políčku pro nahrávání fotografie.

2. Doporučuji změnit výchozí Adresář souborů, kam budou obrázky nahrávány, z pictures například na uzivatele.

3. Upravte maximální a minimální rozlišení nahrávaného obrázku. Nezapomeňte na to, že nahranou fotku je možné automaticky zmenšovat a ořezávat pomocí stylů obrázku.

4. Nahrávaný obrázek tedy nedoporučuji omezovat maximálními rozměry, ale jen minimálními a Velikostí souboru.

5. Změněné výchozí nastavení nezapomeňte uložit.

Pole s popisem uživatele

Tam, kde jsou na webech profily uživatelů, je obvykle i prostor, kam uživatel může vložit pár vět s představením své osoby. Tohle už Drupal 8 ve výchozí podobě nenabízí, ale není problém takové pole doplnit.

1. Zůstaňte ve Správě polí, klepněte na Přidat pole a zvolte Text (plain, long), což bude textová oblast na zadání víceřádkového textu.

2. Políčko nazvěte Představení uživatele.

3. V upřesňujícím nastavení ponechejte jen jednu hodnotu (nikdo nebude vyplňovat dvě svoje představení), a pokud stavíte vícejazyčný web, zapněte volbu Users may translate this field.

Obrázek 8.6 Přidávání políčka pro informace o uživateli

Tip: Dobře zvažte, zda uživatelům umožníte vkládat formátovaný text místo základního plain. Někteří si pak totiž z vašeho webu udělají farmu na zpětné odkazy.

Odkaz na webové stránky uživatele

Kromě obrázku a představení uživatele zkuste vytvořit ještě odkaz na domovský web uživatele, který se k vám zaregistruje.

1. Jako Typ pole zvolte Odkaz, jako Popisek nového pole zadejte Webová stránka.

2. Stejně jako u popisku nechejte možnost zadání jen jedné hodnoty. Překlad odkazu na web asi nemá smysl, takže upřesňující nastavení beze změny uložte a pokračujte dále.

3. V přehledu vlastností nového políčka s odkazem nastavte Allow link text na Vypnuto. Zajímá nás totiž odkaz na web uživatele, nikoli aby si sám vkládal text, kterým bude na svůj web odkazovat. Nestavíme farmu na zpětné odkazy.

4. Nastavení uložte.

Úprava formuláře pro registraci uživatele

Vždy když přidáte k entitě nějaká nová políčka, měli byste zkontrolovat, jak vypadá formulář, ve kterém se tato pole budou vyplňovat. Zadávání uživatele není výjimkou. Ze sekce Nastavení −› Uživatelé −› Nastavení účtu −› Správa polí se tedy přepněte na kartu Manage Form Display.

1. Přetáhněte políčka do pořadí, v jakém je chcete mít ve formuláři pro registraci uživatele na adrese /user/register i v administrátorské sekci Uživatelé −› Přidat uživatele.

2. U políčka s obrázkem klepněte na ozubené kolečko a nastavte styl obrázku, který se použije jako náhled nahraného souboru.

3. Ozubeným kolečkem u pole Představení uživatele upravte počet řádků v textovém poli, které se pro zadání představujícího textu nabídne.

4. Pro pole Webová stránka nastavte ozubeným kolečkem Placeholder pro URL. Zadejte zde http://www.domena.tld/. Placeholder při zadání adresy do políčka zmizí, ale do té doby poslouží jako nápovědný text, aby uživatel věděl, že odkaz má zadávat včetně http://.

5. Po uložení můžete vyzkoušet, že se registrační formulář změnil.

Tip: Pokud potřebujete zkoušet, jak web vypadá pro nepřihlášeného uživatele, nemusíte se odhlašovat. Nové okno prohlížeče sice nepomůže, ale protože máte na počítači jako správný tvůrce webů více prohlížečů, otevřete si jiný. V něm přihlášeni nebudete, a můžete tak web zkoumat i z pohledu návštěvníka. Mnoho tvůrců webů na to bohužel často zapomíná.

Obrázek 8.7 Nastavení formuláře pro registraci uživatele

Zobrazení polí na stránce s profilem uživatele

Uživatel může tedy svoje údaje vkládat jak při registraci, tak při úpravě svého profilu, pokud se po přihlášení podívá na svůj profil (tedy na adresu /user) a klikne na odkaz Upravit. Zbývá nastavit zobrazení údajů z těchto políček na straně s jeho profilem.

1. Přepněte se do sekce Nastavení −› Uživatelé −› Nastavení účtu −› Správa zobrazení.

2. Přetáhněte políčka do pořadí, v jakém se mají objevit, a nastavení uložte.

3. Rozhodněte, zda nad některými políčky necháte zobrazen jejich název, a pokud ne, pak ve sloupci Popisek nastavte hodnoty na Skryté. U obrázku a představení uživatele je popisek zbytečný, pro pole Webová stránka jej nastavte na Inline. Před odkazem na webové stránky se tedy zobrazí „Webová stránka:“.

4. Přes ozubené kolečko upravte styl obrázku, který se aplikuje na fotku nahranou uživatelem.

5. Kvůli spamu i kontrole odkazování na související weby ze strany vyhledávačů upravte nastavení políčka Web tak, že u něj zapnete přidání atributu rel=“no-follow“. Zároveň zapněte otevření odkazu do nového okna, aby uživatelé, kteří si rozkliknou něčí web, neodcházeli z toho vašeho.

A to je k nastavení profilu uživatele a jeho úpravě pomocí polí prakticky vše. Můžete ještě zkusit vytvořit blok pomocí modulu Views, který bude obsahovat komentáře nebo obsah zadaný uživatelem. Sestrojení je jednoduché. Vytvoříte příslušný pohled a do kontextového filtru nastavíte Autora uživatele získaného z URL adresy. Jakmile pak blok dáte do některého regionu a necháte jej zobrazovat jen na adrese /user/*, automaticky zobrazí obsah nebo komentáře týkající se jen daného uživatele.

Obrázek 8.8 Nastavení zobrazení uživatelského profilu

Tip: Aby si ostatní mohli prohlížet uživatelské profily jiných uživatelů, nezapomeňte jim zapnout oprávnění Zobrazit profily uživatelů.

Ukrytí přihlašovacího formuláře

V kapitole o správě uživatelů jsme si řekli, jak Drupal nastavit tak, aby si v něm uživatelé zvenku nemohli vytvářet nové uživatelské účty a bez vašeho vědomí se do webu přihlašovat. U firemních nebo osobních webů, kde uživatelům neumožňujete registraci a případné nové účty může vytvořit jen správce webu (viz administrační část Nastavení −› Uživatelé −› Nastavení účtu), je zbytečné zobrazovat na stránce přihlašovací formulář. Uživatele zbytečně láká zkoušet, zda by se přece jen nepřihlásili.

Nikoli tedy z bezpečnostních, ale především z ryze praktických důvodů formulář s blokem přihlašování vůbec nezapínejte. Rovněž vypněte blok s odkazy User account menu, čímž z webové stránky odstraníte odkaz směřující na přihlašovací formulář.

Do webu se budete moci bez problémů kdykoli přihlásit na adrese /user. Zde se nepřihlášenému uživateli zobrazí přihlašovací formulář.

Tip: Na adrese /user se rovněž může přihlásit administrátor, který se potřebuje dostat k webu se zapnutým Režimem údržby. Stránka /user je totiž jediná, která v tomto režimu funguje. Z toho také plyne, že na této adrese můžete sledovat, jak u někoho vzniká nový web, který je zatím vypnutý.

Aktualizace Drupalu

Máte-li zapnutý modul Update Manager, Drupal v nastaveném intervalu kontroluje dostupnost nových aktualizací pro témata vzhledu, moduly a pro Drupal samotný. Nebudeme se teď zabývat upgradem, tedy povýšením z Drupalu 7 či staršího na Drupal 8, ale aktualizacemi neboli updatem, kdy probíhají vylepšení a opravy jen pro stávající řadu Drupalu. Oba pojmy prosím rozlišujte, z reakcí čtenářů minulých knih vím, že v tom nemá každý úplně jasno.

Obrázek 8.9 Informace o dostupnosti nových aktualizací

Dostupnost aktualizací je kontrolována oproti serveru drupal.org. Jakmile vyjde novější verze nějakého modulu, Drupal vám to oznámí v sekci Logy −› Dostupné aktualizace. Bezpečnostní aktualizace jsou zobrazeny červeně, nové moduly a témata vzhledu, které jen přidávají nové funkce nebo mění drobnosti v kódu, jsou zobrazeny oranžově.

Tip: Update Manager vás může informovat o dostupnosti aktualizací i na zadaném e-mailu. Stačí jej uvést v sekci Logy −› Dostupné aktualizace −› Nastavení.

Upozornění: Než se pustíte do aktualizace čehokoli v Drupalu, web si zálohujte. Nejlépe do vyhrazené zálohy, které nespoléhá na automatické zálohování na serveru či hostingu. Nezapomeňte, že je potřeba zálohovat jak soubory, tak databázi Drupalu. Jedno bez druhého je při zálohování k ničemu. Více se o zálohování dozvíte o několik stránek dále.

Aktualizace témat vzhledu

Vzhledové šablony obsažené v jádře Drupalu jsou aktualizovány zároveň s jeho jádrem. Opravy a vylepšení samostatných témat vzhledu nejsou většinou tak časté a dobrá zpráva je, že patří k tomu nejjednoduššímu, co se procesu aktualizací v Drupalu týče.

1. V sekci Nastavení −› Vývoj −› Režim údržby přepněte web do servisního režimu a opatřete vhodným hlášením.

2. Přejděte do Logy −› Dostupné aktualizace a přepněte se na kartu Aktualizovat.

3. Zaškrtněte aktualizaci pro téma vzhledu a spusťte ji tlačítkem Stáhnout tyto aktualizace.

4. Když Drupal stáhne a nakopíruje aktualizaci, přejděte do uživatelské části webu a zkontrolujte, zda je vše v pořádku.

5. Někdy může v nové verzi tématu vzhledu dojít ke změně regionů pro bloky, ujistěte se tedy, že je vše na svých místech.

6. Vraťte se do Nastavení −› Vývoj −› Režim údržby a web opět zapněte pro všechny návštěvníky (tedy zrušte režim údržby).

Obrázek 8.10 Seznam položek dostupných pro aktualizaci rovnou z administrace Drupalu

Poznámka: Pokud jste měnili soubory CSS v tématu vzhledu, zálohujte si tyto změny a pak je vraťte zpět do aktualizovaného tématu. Aktualizací se totiž vámi upravené soubory přepíšou. Jak se dále dozvíte, je proto lepší vytvářet odvozená témata vzhledu a do těch instalovaných z drupal.org kvůli potenciálním aktualizacím nezasahovat.

Aktualizace modulů

Průběh a postup při aktualizaci modulů je podobný jako u témat vzhledu. Měli byste však pozorně sledovat přehled změn, které nová verze modulu přináší. Někdy má totiž tolik nových nastavení nebo i oprávnění, že je nesmíte zapomenout upravit, nechcete-li částečně nefunkční web. Více než u témat vzhledu platí, že je nutné mít kompletní zálohu webu. Nové verze modulů si nemusí rozumět s jinými a bylo by zaděláno na problém.

1. Režim údržby není třeba dopředu zapínat, při aktualizacích vám jeho aktivace bude nabídnuta.

2. Přejděte tedy rovnou do sekce Logy −› Dostupné aktualizace a přepněte se na kartu Aktualizovat.

3. Vyberte moduly, jejichž aktualizaci chcete provést, a tlačítkem vespod ji spusťte.

4. Drupal si nové moduly stáhne k sobě na server a nabídne zapnutí režimu údržby.

5. V dalším kroku moduly nakopíruje místo jejich stávajících verzí a vyzve vás k spuštění aktualizace databázové struktury.

6. Při aktualizaci databáze dochází k úpravám nastavení modulů nebo k přidání dalších tabulek a sloupečků, do kterých si moduly něco ukládají. Je tedy kriticky důležité, aby aktualizace databáze proběhla bez chyby.

7. Po jejím dokončení web zkontrolujte, prohlédněte nastavení modulů, a je-li vše v pořádku, režim údržby vypněte.

V některých případech může dojít k problému s aktualizací databáze nebo k tomu, že si ostatní moduly nerozumí s aktualizovanou verzí jiného modulu. V takovém případě vám nezbude nic jiného než web obratem obnovit ze zálohy. Překopírujete zpět aktualizované moduly a obnovíte zálohu databáze. Web pak bude ve stejném stavu jako před aktualizací.

Tip: U větších webů, kde z popisu nových verzí modulů vyplývá, že by mohly způsobit problémy, je lepší si vytvořit kopii webu v počítači nebo na odděleném serveru a aktualizaci provést zkušebně tam. Zjistíte, na jaké problémy lze narazit, pokusíte se je vyřešit a s těmito znalostmi pak budete moci úspěšně provést aktualizaci i na živém webu.

Poznámka: U některých hostingů vám Drupal bude tvrdit, že aktualizaci modulů či témat nelze provést z administrace bez toho, že byste zadali přístupové údaje k FTP. To je způsobeno tím, že máte špatně nastavena oprávnění pro přístup ke složkám a Drupal není schopen staré moduly mazat a nové místo nich nakopírovat.

Aktualizace jádra Drupalu

Několikrát ročně se mohou objevit i aktualizace samotného Drupalu. Zejména ze začátku po vydání jeho nové řady bývají v aktualizacích různé bezpečnostní opravy. Často dodávám, že není třeba se Drupalu bát, když pro něj vycházejí opravy. Ty jsou naopak důkazem toho, že jeho komunita je živá a aktivně řeší problémy. Je to rozhodně lepší než webový projekt stejné velikosti, který zdánlivě žádné opravy nepotřebuje. Nic totiž není zcela bezchybné. Navíc spousta aktualizací pro Drupal řeší situace, které nastanou jen při určité kombinaci modulů a oprávnění, takže nelze říci, že by byl Drupal nějak výrazně „děravý“.

Na druhou stranu samozřejmě v momentě, kdy opravy vyjdou, jsou bezpečnostní problémy předešlé verze popsány, a tak je někdo může zneužít k napadení neaktualizovaného webu.

Obrázek 8.11 Drupal vás upozorňuje na dostupné aktualizace i během práce s administrací

Jádro Drupalu není ani v osmé verzi možné aktualizovat přímo z administrace, takže vše musíte po vytvoření zálohy udělat ručně pomocí (S)FTP nebo příkazového řádku na serveru.

1. Přihlaste se jako administrátor a přepněte web do režimu údržby.

2. Z adresy drupal.org/project/drupal si stáhněte balíček s novou verzí Drupalu pro svou řadu (tedy 8) a rozbalte jej v počítači.

3. Pomocí klienta FTP smažte složku core a soubor index.php a místo nich nakopírujte nové z aktualizovaného balíčku.

4. Do prohlížeče zadejte adresu webu následovanou /update.php a proveďte aktualizaci databáze.

5. Po dokončení aktualizace, je-li vše bez chyb, web zkontrolujte, navštivte sekci Logy −› Hlášení stavu a následně zrušte režim údržby.

Obrázek 8.12 Průvodce aktualizací databáze

Poznámka: Opravdu nepřehlížejte poznámky k vydání nové aktualizace pro Drupal. Mohou obsahovat dodatečné instrukce k tomu, co je při dané aktualizaci ještě potřeba provést. Například při jedné z aktualizací Drupalu 7 bylo nutné upravit soubory .htaccess v souborovém úložišti Drupalu.

Hledání a řešení problémů

Pokud při aktualizacích Drupalu nebo jeho modulů a témat zjistíte, že došlo k nějaké chybě, obvykle uvidíte i chybové hlášení. Nejčastěji se to může stát v té části průběhu aktualizace, kdy jsou měněny databázové struktury. Server může mít pomalou odezvu a ukončit aktualizační skript dříve, než provede svou práci. V tom případě musíte problém zkusit vyřešit domluvou se správcem serveru a pokusit se navýšit limity pro aplikaci.

Častěji se setkávám s tím, že některé doplňkové moduly sice mají vyřešen proces aktualizace databáze mezi jednotlivými svými verzemi, ale již ne napříč. Pokud jednu z aktualizací vynecháte třeba proto, že nepřinášela žádnou bezpečnostní opravu, ale později budete kvůli bezpečnosti aktualizovat na další verzi, může to být problém. V praxi je výjimečný, ale stává se.

V takovém případě vám Drupal zobrazí chybové hlášení s částí databázového příkladu. Až web ze zálohy vrátíte do původního stavu a uděláte si jeho kopii pro testování, zadejte tuto chybovou hlášku do vyhledávače nebo přímo do hledacího políčka na drupal.org a zkuste se podívat, jestli někdo neřešil podobný problém. Dost často v tom nebudete sami a řešení někdo ze zkušenějších drupalistů nabídne. Případně vyjde ještě novější verze modulu, která již aktualizace zvládne bez problémů i při konfiguraci vašeho webu.

Hlášení stavu

Problémy ovšem nemusí nastat jen po aktualizacích. Doporučuji proto sledovat administrační stránku Logy −› Hlášení stavu. Na ní najdete nejenom upozornění na případné problémy v instalaci Drupalu, ale i různé informace o konfiguraci serveru:

• Verzi instalovaného jádra Drupalu

• Stav aktualizace databází, tedy zda jste po aktualizaci nezapomněli spustit update.php

• Typ databázového systému

• Informace o knihovně PHP pro práci s obrázky

• Stav konfiguračních souborů – nesmí do něj být možné zapisovat

• Oprávnění přístupu k obsahu – pokud máte přístupové problémy se zobrazováním obsahu, klepněte zde na odkaz Obnovit práva

• Verzi PHP – po kliknutí na odkaz uvidíte klasický výstup phpinfo() s detailními informacemi o nastavení PHP. Někdy tyto informace budete potřebovat, aby vám v diskuzích poradili.

• Velikost paměti pro běh PHP skriptů

• Různá další nastavení PHP

• Stav aktualizací

• Verzi webového serveru a verzi databázového serveru

• Datum a čas posledního spuštění cronu

Kromě výše uvedených výchozích položek sem mohou různé doplňkové moduly přidat další. Například vás informují o tom, že jste do Drupalu nenakopírovali určitou doplňkovou knihovnu s JavaScripem, případně že ji máte ve staré verzi a je potřeba ji ručně nahradit aktuálnější.

Obrázek 8.13 Důležitá informační stránka Logy −› Hlášení stavu

Upgrade Drupalu v kostce

Povýšení Drupalu na novou verzi, tedy například změna z Drupalu 7 na Drupal 8, je mnohem náročnější zásah do života webu, než je pouhá aktualizace. Už jen proto, že z Drupalu 8 zmizela klasický upgradovací postup, při kterém jste překopírovali novou verzi na starou, aktualizovali jádro a postupně jste zapínali nové verze použitých modulů. V Drupalu 8 je vše jinak. Upgrade ve smyslu toho, co jste znali, je minulost. Místo něj nastupuje proces migrace. Pokud to zjednoduším, vyžaduje přechod z Drupalu 7 na Drupal 8 vytvoření nového webu a import starých dat a některých nastavení.

Určitě tedy budete potřebovat kopii stávajícího webu a vývojovou kopii webu nového. Obě si pohodlně rozběháte na lokálním počítači například pomocí nástroje Acquia Dev Desktop popsaného na začátku knihy.

Před upgradem

Spusťte Acquia Dev Desktop a zvolte si v něm import stávajícího webu. Do složky v počítači si překopírujte web z hostingu a vyexportujte jeho databázi. Následně v Dev Desktopu vyberte složku, do které jste web nakopírovali. Zvolte, že máte MySQL dump file a tlačítkem Browse jej najděte.

Nezapomeňte také upravit lokální název webu, tedy část adresy, pod kterou bude v počítači dostupný. Název webu doplňte například slovem old.

Obrázek 8.14 Import stávajícího webu do Acquia Dev Desktopu

Po dokončení importu starého webu si připravte novou instalaci webu s Drupalem 8. Opět tedy v Acquia Dev Desktopu, jen nyní zvolte, že chcete vytvořit web nový. Dev Desktop nabídne výběr několika distribucí a základních instalací Drupalu. Zvolte aktuální verzi Drupalu 8 a klepněte na odkaz Install.

V dialogu pro vytvoření nového webu vyberte složku, kde bude umístěn (pozor, ať jej omylem nenainstalujete do stejné složky jako starý web), zadejte jeho název a nechejte vytvořit novou databázi.

Poté co jej Dev Desktop do počítače nakopíruje, zobrazí vám odkaz, pod kterým je nový web v počítači dostupný.

Obrázek 8.15 Vytvoření nového webu s Drupalem 8 v Acquia Dev Desktopu

Jak na migraci

K tomu, abyste spustili migrovací proces, je základní instalace Drupalu 8 připravena jen částečně. Drupal 8 sice obsahuje modul pro migraci, ale nemá dořešené uživatelské rozhraní pro migraci v uživatelském rozhraní Drupalu.

Uživatelské rozhraní pro migraci v Drupalu 8 doplníte modulem Drupal Upgrade (drupal.org/project/migrate_upgrade). Časem by se měl objevit přímo v jádře, zatím existuje takto doplňkově. Modul zapněte – bude vyžadovat i aktivaci migrovacích modulů, které jsou součástí jádra Drupalu.

Obrázek 8.16 Spuštění migračního procesu

Následně si do své instalace Drupalu 8 nakopírujte všechny doplňkové moduly, které budete na webu chtít používat. Zda se přenese jejich nastavení a obsah, bude záviset na tom, zda jejich tvůrci vytvořili i migrační můstek v těchto modulech.

Máte-li vše výše uvedené hotovo, přejděte v novém webu na adresu /upgrade. Uvidíte rekapitulaci v podstatě výše uvedených informací. Je zde zmíněno i zálohování webu a skutečnost, že by měl mít možnost koukat do databáze a na soubory webu starého, což je asi z podstaty věci samozřejmé. Jelikož pracujeme na lokální kopii, můžeme klidně vypustit přepnutí webu do režimu údržby a pokračovat na další část migrace.

Ta je již o něco zajímavější a vyžaduje vaši plnou pozornost. Musíte totiž zadat údaje pro připojení k databázi STARÉHO webu, který jste si do počítače do Dev Desktopu nakopírovali. Takže v podstatě zde vyplníme to, co v importním průvodci na začátku celého postupu. Nezapomeňte, že databáze v Dev Desktopu má nestandardní číslo portu, které je tedy rovněž potřeba přepsat.

Aby bylo možné překopírovat soubory umístěné například v obrázkových políčkách, zadejte jejich umístění zadáním absolutní cesty ke složce se starým webem.

Obrázek 8.17 Nastavení propojení s kopií původního webu

V další části vám migrační modul zobrazí seznam modulů ve starém a novém webu spolu s informací, zda se je podaří zmigrovat. Pokud je ve sloupci Cíl slovo Missing, pak buď daný modul nemáte v novém Drupalu připraven, nebo prostě nepodporuje migrační mechanizmus a jeho nastavení budete muset do nového Drupalu překlikat.

Stále máte možnost se vrátit a například doplnit chybějící moduly. Ve spodní části tohoto přehledu najdete naopak seznam položek, které zmigrovat půjde. Momentálně to jsou bloky, komentáře, obsah, filtry, nastavení stylů obrázků, kategorie, uživatelé a další položky.

Klepnutím na tlačítko Perform upgrade celý proces migrace spustíte. Jeho délka závisí na počtu položek ve starém webu. Pokud nejde o obří projekt, mělo by být do pár minut hotovo. Zobrazí se vám titulní strana webu a do logu se vloží informace o průběhu migrace.

Rovněž byste nyní měli vidět převedený obsah, obrázky, uživatele, dokonce i název webu, slogan, bloky a položky menu. Zbývá celý web znovu nastavit a můžete se s ním pochlubit světu.

Instalace doplňkových modulů a témat

V minulé knize o Drupalu 7 jsem tvrdil, že je i v základu dobře použitelný pro jednoduché článkové nebo firemní weby. Pro Drupal 8 to platí dvojnásob. Zařazením modulu Views, možností nejrůznějších exportů a importů a začleněním vizuálního editoru se z Drupalu stal mnohem vybavenější systém, který bez problémů zvládne i větší weby.

I tak ale velmi brzy zjistíte, že jen se základní sadou modulů si nevystačíte. Budete chtít doplnit eshopové řešení, metatagy, generátor mapy webu sitemap.xml, implementaci vlastního vyhledávání Google Custom Search Engine, přihlašování přes Facebook či jiné funkce nedostupné v základní výbavě Drupalu.

Není to samozřejmě problém. Filozofie Drupalu je taková, aby byl modulární a každý si mohl postavit web jen s takovými funkcemi, které opravdu využije. Nemá tedy smysl dávat veškerou dostupnou funkcionalitu do základní instalace. Jednak by instalační balíček byl zbytečně velký, jednak by takový Drupal zbytečně zatěžoval server, aniž by to mělo opodstatnění.

Proto se vždy řiďte jednoduchým pravidlem: Zapínejte a dodatečně instalujte jen takové moduly, které opravdu využijete. Pokud chcete nějaký modul jen vyzkoušet, pak jej po vypnutí zase odinstalujte a odstraňte.

Poznámka: Rozšiřujících modulů pro Drupal jsou desítky tisíc. Na některé funkce jsou dostupné dva i více modulů. Zkuste si vybírat podle počtu instalací nebo rychlosti řešení chyb. Všechny tyto informace najdete na stránce daného modulu na drupal.org.

Instalace a správa modulů

Přehled aktuálně dostupných modulů ve vaší instalaci Drupalu si zobrazíte po klepnutí na položku Rozšíření v administrátorské liště. Drupal vám zde zobrazí seznam všech modulů, které máte ve složkách modules, sites/all/modules, sites/default/modules, sites/adresawebu.cz/modules a podobně. Standardně byste ale měli všechny doplňkové moduly, které nejsou součástí jádra Drupalu, kopírovat do složky modules.

Jakmile nakopírujete nový modul do Drupalu, zobrazí se vám v přehledu Rozšíření, kde jej pouze zapnete a nastavení uložíte. Při aktivaci modulu Drupal automaticky stáhne jeho překlad, je-li dostupný pro aktivní jazykové mutace.

Moduly můžete do Drupalu nainstalovat dvěma způsoby:

• Přes administrační rozhraní Rozšíření −› Instalovat nové moduly

• Přes FTP (SSH nebo jiný souborový protokol) přímo do složky modules

Tip: Provozujete-li Drupal na vlastním serveru, můžete ještě vyzkoušet projekt Drush (drush.org) pro obsluhu Drupalu na příkazovém řádku a instalaci modulů tímto způsobem.

Typičtější je použití prvního způsobu instalace, jak pro moduly, tak pro témata vzhledu. Na stránce drupal.org/project/project_module vyhledejte doplňkový modul, který byste si rádi nainstalovali, a rozklepněte si jeho stránku. Ve spodní části stránky modulu najdete sekci Downloads, ve které jsou zeleně podbarveny aktuální verze modulů, žlutě různé vývojové varianty a červeně vývojová stádia modulů, která rozhodně není vhodné instalovat na produkční web, nemáte-li k tomu důvod.

Stáhněte si proto vždy některou ze stabilních, zelených variant vybraného modulu, a to pro takovou verzi Drupalu, kterou používáte. V případě Drupalu 8 budou moduly označeny vždy schématem 8.x-číslo-verze-modulu.

Zkopírujte odkaz na jeho balíček tar.gz a postupujte následovně:

1. V administrační části Rozšíření klepněte na tlačítko Instalovat nové moduly.

2. Do políčka Nainstalovat z URL zadejte zkopírovanou adresu balíčku s modulem.

3. Tlačítkem Instalovat spusťte jeho nakopírování. Pokud Drupal nemá možnost zapisovat do složky s moduly, nabídne vám stránku pro autorizaci přístupu na FTP.

4. Zde zadejte přihlašovací údaje k serveru FTP. Jeho adresu většinou zadávat nemusíte, postačí výchozí localhost.

5. Po nahrání modulu jej můžete zapnout a začít pracovat s funkcemi, které do Drupalu přidává.

6. Využijte toho, že modul po svém zapnutí nabídne odkazy pro nastavení a úpravu oprávnění.

Obrázek 8.18 Formulář pro instalaci modulů

Poznámka: Moduly lze přes administraci Drupalu instalovat též tak, že si je stáhnete k sobě do počítače a pak je přes tlačítko Procházet vyberete z disku. Je to ale zbytečný krok navíc, který má smysl jen u modulů, které jste získali mimo drupal.org.

Poznámka: Pokud po zapnutí nového modulu uvidíte jen bílou stránku, pak je buď v tomto modulu chyba, nebo, a to mnohem častěji, váš hosting přiděluje příliš málo paměti pro běh skriptů PHP. Problémem může být také nedostatečně nastavená kapacita databáze MySQL. Viz kapitola o instalaci Drupalu.

Jak odinstalovat modul

Potřebujete-li okamžitě vyřadit problémový modul a nemůžete se kvůli němu dostat do administrace, stačí jej ze složky modules smazat. Čistější řešení, je-li ta možnost, je samozřejmě následující:

1. Ve správě modulů v části Rozšíření se přepněte na kartu Odinstalovat.

2. Zde vyberte vypnutý modul a potvrďte jeho odinstalaci.

3. Drupal nyní zobrazí, o jaká data odebráním modulu přijdete.

4. Nyní můžete daný modul smazat ze serveru.

Odinstalace modulu zároveň odstraňuje veškerá data s ním související a veškeré jeho nastavení. Můžete toho využít v případě, že pochybujete o správnosti své práce s daným modulem a chcete jej celý nainstalovat a nastavit znovu. Pak jej nemusíte kopírovat, stačí jej pouze vypnout, odinstalovat a znovu zapnout.

Obrázek 8.19 Ukázka výstrahy při odebírání modulu

Poznámka: Na rozdíl od Drupalu 7 není v Drupalu 8 možné modul jen vypnout, vyřadit jeho funkcionalitu a následně jej zase aktivovat s tím, že se objeví jeho dosavadní nastavení. Odinstalací a vypnutím modulu nyní ihned přijdete o jeho data.

Co jsou a k čemu slouží závislosti

Skutečnost, že je Drupal modulární systém, znamená nejenom to, že nové funkce můžete přidávat pomocí doplňkových modulů. Modularita se týká také programátorské úrovně. Mnohé moduly využívají funkce jiných nebo jejich funkcionalitu využívají. Tím se efektivně využívá stávající kód a není nutné, aby jeden modul obsahoval úplně všechny funkce, které nějak využívá.

Správce modulů v Drupalu vás automaticky upozorňuje na jejich vzájemné závislosti. Stačí si rozklepnout podrobnější informace u vybraného modulu. Pokud si do Drupalu nakopírujete nový modul, který nemá splněny závislosti, nebude možné jej zapnout do doby, než nakopírujete také další moduly, na kterých závisí. Drupal vám je naštěstí vyjmenuje.

Instalace a správa témat vzhledu

Správa témat vzhledu je do jisté míry podobná správě modulů. Zobrazíte si ji v administrační části Vzhled. Zde se objeví přehled povolených témat a také náhledy dalších, které sice máte v Drupalu nakopírovány, ale neaktivovali jste si je.

Témata je možné instalovat velice podobně jako doplňkové moduly. Poté co si je stáhnete z adresy drupal.org/project/project_theme, můžete je nakopírovat do složky themes, případně do některé z variant sites/*/themes. Chcete-li využít webový instalátor v administračním rozhraní, můžete:

1. Přepněte se do administrační části Vzhled a klepněte na odkaz Instalovat nové téma.

2. Zadejte adresu balíčku s tématem (opět by měla odpovídat jeho verze, tedy 8.x-*), případně jej vyberte z počítače tlačítkem Procházet.

3. Je-li to nutné, zadejte přihlašovací k údaje FTP a instalaci zvoleného tématu dokončete.

Obrázek 8.20 Správa témat vzhledu v Drupalu 8

Nastavení témat vzhledu

Když se v administrační části Vzhled přepnete na kartu Nastavení, zobrazí se vám v první řadě tzv. Globální nastavení společné pro všechna témata vzhledu. Pomocí několika zatrhovátek můžete určit, zda chcete na svém webu uživatelské obrázky v příspěvcích, komentářích a ikonu webu.

Kromě toho máte možnost nahrát své vlastní logo a favicon (soubor ico 16x16px). Stačí u dvou spodních voleb vypnout Nastavení obrázku loga a Nastavení favicon ikony, čímž si zobrazíte formulář pro nahrání souboru. Při nahrávání loga berte v úvahu, že nedojde k jeho zmenšení, proto si jej v počítači dopředu připravte do podoby a velikosti, v jaké jej chcete na webu mít.

V pravém horním rohu uvidíte kromě globálního nastavení také názvy jednotlivých povolených témat vzhledu. V nich se ukrývá podobné nastavení, jen bude doplněno o volby barev (je-li aktivní modul Color a pokud ho téma vzhledu podporuje) a případně další nastavení, které je specifické jen pro dané téma vzhledu. Některá mají poměrně pokročilé možnosti úprav, počínaje výběrem písma a konče úpravou rozvržení stránky.

Obrázek 8.21 Globální nastavení vlastností témat vzhledu

Tip: Hledáte nastavení zobrazení loga, názvu webu a sloganu? To se v Drupalu 8 přesunulo z této části administrace do nového bloku Site branding, v jehož nastavení lze tyto věci změnit.

Zálohování webu

Když se ohlédnu zpátky ve tvorbě webů, které jsem měl na svědomí, v mnoha případech jsem svým zákazníkům pomáhal řešit problémy vzniklé poté, co se pustili do nějaké neotestované aktualizace svého webu a nepřipravili si předtím zálohu. Ostatně i přes různá varování se to stalo některým čtenářům mých předchozích knih o Drupalu. Že je potřeba web při jakékoli složitější úpravě což aktualizace bezesporu je zálohovat, bych mohl vyprávět i ze svých vlastních zkušeností na mých webech. Věřte tedy tomu, že když vám radím zálohovat, mám to podloženo i prakticky vyzkoušeno.

Řada webhostingů nebo serverových řešení má nějaké pravidelné zálohování webu alespoň jednou za týden. Takováto záloha je dobrá, když chcete mít jistotu, že v případě selhání serveru nebo útoku hackera nepřijdete o svá data. Jenže tyto zálohy se nehodí pro případ, kdy chcete mít aktuální kopii webu předtím, než se pustíte do aktualizace. Pominu-li, že obnovení ze zálohy vytvářené poskytovatelem hostingu není úplně jednoduchá záležitost, co se týče komunikace, určitě nechcete v případě problémů zbytečně obnovovat starší kopii webu.

Na hosting bych tak úplně nespoléhal ani v případě průběžných záloh. Rozhodně neuškodí, když si zálohu webu uděláte občas ručně.

Tři položky zálohy

Dříve jsem tvrdil, že kompletní záloha Drupalu je složena ze dvou částí: souborů a databáze. V současné době to trochu upřesňuji a říkám, že záloha webu s Drupalem obnáší:

• Kopii souborové struktury Drupalu a všech doplňkových modulů či témat vzhledu

• Kopii nahrávaných souborů v souborovém úložišti Drupalu (tedy složku sites/default/files)

• Kopii databáze

Bez těchto tří položek web v podstatě znovu nerozběhnete, pokud by se s ním něco stalo. Uvědomte si totiž, že všechny soubory s moduly tvoří to, jak Drupal funguje. Ve složce souborového úložiště máte všechny obrázky, videa a další mediální obsah, který je na webu. A konečně v databázi je uloženo veškeré nastavení webu, textový obsah, seznam uživatelů a vše další, co jste naklikali či napsali v administraci Drupalu.

Především na kopii databáze se často zapomíná, protože z ní mají uživatelé obavy. Výsledkem pak je, že sice mají hromadu souborů, která je ale dobrá jen k tomu, aby web znovu nainstalovali úplně od začátku, postupně jej nastavili a znovu do něj vložili obsah.

Jak zálohovat mimo administraci

Osobně dávám přednost zálohování Drupalu mimo jeho administrační prostředí. Ostatně u souborů tvořících jeho moduly a jádro vám nic jiného nezbude. Pro databázi a nahrávaný obsah jsou jistá řešení přímo v administraci, viz dále. Pokud ale potřebujete kompletní zálohu webu a hlavně možnost mít jej jak obnovit v případě havárie, kdy administrace přestane fungovat, bez externích nástrojů se neobejdete.

Zálohování souborů

Záloha souborů – ať už těch programových (moduly, témata vzhledu, jádro Drupalu), nebo těch obsahových, což jsou obrázky a videa ve složce sites/default/files – je poměrně jednoduchá. K webu se připojíte pomocí svého oblíbeného programu FTP a soubory jednoduše překopírujete.

Upozornění: Nezapomeňte překopírovat i skryté soubory s tečkou na začátku! Především .htaccess. Problém většiny programů FTP je ten, že standardně tyto soubory nezobrazují, což pak má za následek, že je ani nepřekopírujete. Například bez .htaccess vám nebudou fungovat vnitřní stránky webu. Zjistěte si tedy, jak se ve vašem programu pro FTP skryté soubory zobrazují.

Poznámka: Obnovení dat samozřejmě provedete jejich překopírováním zpět.

Zálohování databáze

Databázi zazálohujete několika způsoby. Poskytovatel hostingu obvykle nabízí nástroj phpMyAdmin. Poté co se do něj přihlásíte, rozklikněte si na levé straně svou databázi. Následně:

1. V hlavní části vpravo se přepněte na kartu Export.

2. Rozbalte si Vlastní nastavení.

3. Vyberte všechny tabulky v databázi kliknutím na Vybrat vše.

4. Zvolte uložení exportu databáze do souboru a kvůli zmenšení stahovaného souboru vyberte Kompresi, například do ZIPu.

5. Ujistěte se, že je v nastavení exportu níže vybrána Struktura i data.

6. Další výchozí nastavení neměňte a klepněte na tlačítko Proveď.

7. Po chvíli zpracovávání vám phpMyAdmin nabídne stažení zálohy databáze.

Případnou obnovu dat provedete na kartě Import, kde nahrajete soubor se zálohou databáze, který jste výše uvedeným postupem vytvořili.

Pokud přístup k nástroji phpMyAdmin nemáte, použijte zdarma dostupný nástroj Adminer (www.adminer.org) od českého vývojáře Jakuba Vrány. Celou funkcionalitu phpMyAdmina nabízí v jednom souboru, který nakopírujete do webu, načtete jej v prohlížeči (např. www.domena.tld/adminer.php), přihlásíte se s přístupovými údaji k databázi a rovněž v něm provedete export databáze. Stejně tak umí i případný import a samozřejmě dovede zpracovat i zálohu databáze vytvořenou pomocí phpMyAdmina.

Obrázek 8.22 Export databáze v nástroji phpMyAdmin

V případě velkých webů může být zálohování prostřednictvím webového prohlížeče problém. Limity pro webovou aplikaci serveru nedovolí vygenerovat a nabídnout ke stažení tak velkou databázi. V tom případě musíte sáhnout po nějakém specializovaném programu pro správu databáze. Na počítači s OS X používám zdarma dostupný Sequel Pro (www.sequelpro.com), ve Windows můžete zkusit HeidiSQL (www.heidisql.com).

Dalším řešením je příkazový řádek serveru, kde spustíte příkaz mysqldump a vytvoříte soubor s exportem databáze. Vyžaduje to samozřejmě přístup na server přes SSH a přístup k tomuto příkazu. Jeho syntaxe je následující:

mysqldump nazev_database –u jmeno_uzivatele –p > export.sql

Po jeho spuštění zadáte heslo pro přístup k databázi a počkáte na vygenerování souboru export.sql.

Jak zálohovat přímo z Drupalu

Pro údržbovou zálohu databáze webu a nahrávaných souborů (pokud jich není příliš) použijte dvojici modulů Backup and Migrate (drupal.org/project/backup_migrate) a Backup and Migrate Files (drupal.org/project/backup_migrate_files). První je zálohovací modul obecně a obsahuje funkce pro zálohování databáze jak do souboru pro okamžité stažení, tak pro průběžné zálohování do úložiště na serveru nebo na FTP. Podporuje i různá cloudová úložiště.

1. Po instalaci modulu přejděte do Nastavení −› Systém −› Backup and Migrate.

2. Zvolte zálohu z Výchozí databáze do Download s využitím Výchozího nastavení a klepněte na Zálohovat nyní.

3. Po chvíli se vám nabídne záloha databáze ke stažení.

Pokud se přepnete do Pokročilého zálohování, budete moci změnit použitou kompresi, pojmenování stahovaného souboru a případně vyloučit některé tabulky v databázi ze zálohy. To bych nicméně nedělal, protože taková záloha pak bude nepoužitelná. Naopak je dobře, že ve výchozím nastavení nejsou kopírována data z některých tabulek, jako jsou accesslog, cache a další. Tato data si Drupal vytváří v průběhu práce a v záloze potřebná nejsou. Potřebujete v tomto případě jenom příslušné tabulky, nikoli jejich obsah.

Změnu v pokročilém zálohování lze nastavit jako výchozí pro příští rychlé použití nebo jako nový zálohovací profil.

Tip: Doporučuji vytvořit jeden nový zálohovací profil, ve kterém vyberete jako Cíl adresář na serveru (nebo na FTP či v cloudu) a následně na kartě Plány necháte tento profil automaticky spouštět například každý den. Rovněž si můžete nechat zaslat e-mailové upozornění o provedené záloze.

V případě potřeby obnovit data použijte kartu Obnova. Pokud budete obnovovat data při nepovedené aktualizaci, vraťte nejprve původní soubory aktualizovaných modulů a teprve poté obnovte databázi.

Podobně jako Backup and Migrate zálohuje databázi, umí modul Backup and Migrate Files zálohovat soubory ve složce sites/default/files, respektive tam, kde máte souborové úložiště Drupalu.

Poznámka: V době přípravy knihy nebyl modul Backup and Migrate k dispozici pro Drupal 8 a výše uvedený popis odpovídá verzi pro Drupal 7. Neměl by se však lišit.

Přesun webu z počítače na internet nebo mezi servery

Přesun webových stránek postavených na systému Drupal je v podstatě něco jako záloha webu na jednom místě a jeho obnovení na jiném. Sežeňte si dopředu přístupové údaje pro nakopírování souborů na nový server a údaje pro připojení k databázi na novém serveru. Poté proveďte spolu s nezbytnou předcházející kontrolou webu jeho zálohu a následně ji v novém umístění obnovte.

Plán pro zálohu webu určeného k migraci

I když je příprava k migraci webu v podstatě totožná jako jeho běžné zálohování, připravil jsem pro vás soupis několika bodů zmíněných i dříve v knize, které by vám měly pomoct docílit toho, že přesun webu bude bez problémů.

• Ujistěte se, že v Nastavení −› Média −› Systém souborů nemáte absolutní cesty (tedy s lomítkem nebo C:\ na začátku). Vše musí být relativně vzhledem k instalaci Drupalu, protože nevíte, zda složky mimo Drupal vůbec v cílovém umístění existují. Ostatně toto byste měli mít splněno již při instalaci Drupalu, viz začátek knihy.

• Zkontrolujte, zda odkazy v menu nebo přímo v textech máte v relativní podobě, tedy bez http:// a domény na začátku. Jinak po přesunu webu z počítače na internet nebo obráceně tyto odkazy nebudou směřovat tam, kam předpokládáte.

• Zkontrolujte nastavení PHP a databáze na cílovém serveru, zda vyhovuje požadavkům Drupalu.

• Udělejte si komplet zálohu všech souborů webu (i těch skrytých) i jeho databáze.

Co udělat po překopírování webu do nového místa

Připravenou zálohu samozřejmě nakopírujete do nového umístění, a zase: soubory zřejmě pomocí FTP a databázi buď přes phpMyAdmin, nebo nějakým nástrojem uvedeným výše. Poté by měla následovat malá úprava a kontrola:

1. Nejdříve jděte do souboru sites/default/settings.php a vyhledejte v něm řetězec pro připojení Drupalu k databázi. Přístupové údaje původního umístění nahraďte novými, jestliže se liší. Pozor, abyste omylem nesmazali některé apostrofy, závorky či další znaky.

2. Pokud jste dělali nějaké úpravy v souboru .htaccess a web jste přesunuli na jinou doménu nebo třeba z internetu do počítače, zakomentujte přesměrování z non-www varianty na tu s www. Na lokálním počítači by to mohlo zlobit.

3. Projděte web jako uživatel, poté se přihlaste a zkontrolujte, zda vše funguje, jak by mělo.

Mám ještě malý tip, který celý proces trošku zjednodušuje a odpadá v něm manipulace se souborem settings.php a nastavováním připojovacího řetězce pro databázi:

1. Překopírujte soubory pomocí FTP, tomu se nevyhnete.

2. Na původním webu proveďte zálohu pomocí modulu Backup and Migrate.

3. V novém umístění smažte soubor settings.php, otevřete Drupal v prohlížeči a nainstalujte jej, jako by se jednalo o zcela nový web.

4. Zapněte v něm modul Backup and Migrate. Uvidíte v něm samozřejmě i další moduly z původního webu, ale nevšímejte si jich.

5. Pomocí Backup and Migrate obnovte databázi ze zálohy.

6. Zkontrolujte .htaccess, viz výše.

Co se stane? Aniž byste museli kopírovat zálohu přes nějaký phpMyAdmin a měnit konfigurační soubory, web bude obnoven do podoby 1 : 1. Byť jste jej nainstalovali jako nový, bude mít po obnově zpátky veškerý obsah a zapnuté moduly včetně jejich nastavení, jako tomu bylo na původním webu.

Poznámka: Tento druhý a zdánlivě jednodušší způsob migrace lze provést jen v případě, kdy velikost databáze není mimo možnosti zpracování v prohlížeči (obvykle do 128 MB).

Poznámka: Na začátku knihy máte zmíněno, jak převést stávající web z internetu na lokální počítač pomocí programu Acquia Dev Desktop. Využijte to například pro otestování aktualizací nebo při pokusech s migrací na Drupal 8.

Kapitola 9

Užitečná vylepšení základní instalace

V této kapitole:

• Správce souborů a obrázků IMCE

• Drupal a SEO

• Braňte se před spamem

• Plánovaná publikace obsahu

• Markdown v Drupalu

• Colorbox a jednoduchá galerie obrázků

• Formuláře a sběr dat od uživatelů

• Jak na video a jeho přehrávání

• Drush

• Drupal Console

• Devel

• Display Suite – návrh rozvržení obsahu

• Rules

• Feeds

Správce souborů a obrázků IMCE

Jak už tedy z předchozích částí knihy víte, obrázky a soubory nahrávané přes administraci Drupalu končí ve složce sites/default/files. Záznamy o nich jsou pak uloženy v databázi, což mimo jiné umožňuje vygenerovat přehled, který najdete v administrační části Správa −› Obsah −› Soubory. Zde je možné prohlížet a vyhledávat nahrané soubory a zároveň sledovat, kde v obsahu jsou použity.

Nějakou pokročilejší správu a organizaci souborů však Drupal 8 obsaženu ve svém jádře nemá. Potřebujete-li, pak je možné podobně jako v Drupalu 7 sáhnout po doplňkových správcích souborů. Zřejmě nejpoužívanějším doplňkovým modulem pro tento účel je IMCE (drupal.org/project/imce). Tento prohlížeč souborové struktury Drupalu vám umožní manipulovat se soubory i mimo editaci nějakého obsahu a především díky němu můžete při zadávání obrázků do textu vybrat ty, které jste už jednou nahráli. Nemusíte tak zbytečně plnit úložiště webu duplicitními soubory.

Oprávnění

Po zapnutí modulu IMCE vám přibude jedno oprávnění, které by za běžných okolností mělo být přiřazeno jen správci webu:

• Administer Imce File Manager – umožňuje nastavit modul IMCE a dále upravovat práva, kdo a jak může manipulovat se soubory

Nastavení modulu

Jakmile je modul IMCE nainstalován a aktivován, přejděte do administrační části Nastavení −› Média −› Imce File Manager. Zde můžete upravit dostupné operace, které budou moci uživatelé se soubory provádět. Nastavení je rozděleno do dvou částí:

• První jsou konfigurační profily, ve kterých právě povolujete jednotlivé operace se soubory.

• Druhou částí je seznam uživatelských rolí na webu, kterým pak přiřazujete některý z předem připravených konfiguračních profilů IMCE.

Podívejme se nyní, co vše lze v konfiguračním profilu IMCE nastavit, a tedy co může IMCE pro práci se soubory nabídnout. Po zadání názvu a popisu profilu je to především seznam Povolených přípon souborů. Zde určujete, jaké typy souborů mohou uživatelé v roli s daným konfiguračním profilem nahrávat. Podobně lze omezit maximální velikost nahrávaného souboru a celkové místo v úložišti, které může jeden uživatel se svými soubory využít. Necháte-li obě hodnoty na nule, znamená to, že se limit vůbec neuplatní.

Podobně lze nastavit maximální rozměr nahrávaného obrázku. Pokud jej soubor přesáhne, ale vejde se do limitu velikosti souboru, bude obrázek automaticky zmenšen. Dále nastavte, co se má dít, pokud bude někdo nahrávat do stejné složky další soubor s již existujícím názvem.

Mnohem zajímavější je z hlediska nastavení sekce Folders. Na výběr zde máte zadání trojice složek, kam budou mít uživatelé přístup, a k nim pak zadáváte jednotlivá oprávnění pro manipulaci se soubory:

• Všechna oprávnění bez rozdílu

• Procházení, a tedy výběr a vložení souboru do obsahu

• Vstup do podadresářů v daném umístění

• Vytváření nových adresářů v daném umístění

• Nahrávání nových souborů do zvolené složky

• Mazání souborů

• Mazání podadresářů

• Změna rozměrů nahraných obrázků

Výchozí profil pro administrátora má jako cestu zadánu tečku. Tím modulu říkáte, že dále nastavujete práva pro vše, co je umístěno ve složce sites/default/files. V kombinaci se zapnutou volbou All permissions tak administrátor může libovolně manipulovat se všemi soubory, které jsou v Drupalu nahrány.

Obvyklou praxí je, že běžným uživatelům vytvoříte jejich vlastní složky, kde budou moci se soubory manipulovat. Nemusíte je samozřejmě vytvářet ručně, modul IMCE to zařídí za vás. Stačí do názvu složky zadat [user:uid] nebo [user:name]. Vznikne pak složka sites/default/files/číslo-uživatele, resp. sites/default/files/jméno-uživatele, a to automaticky podle toho, kdo se zrovna přihlásí.

Použití modulu

Abyste mohli IMCE začít využívat ve spolupráci s editorem, je potřeba jej v nastavení editoru ještě aktivovat. Přejděte do administrační části Nastavení −› Vytváření obsahu −› Text formats and editors a u formátu textu, se kterým chcete modul IMCE používat, přejděte do Nastavení. V konfiguraci lišty editoru najdete nové dostupné tlačítko se symbolem obrázku, které slouží k propojení s IMCE. Přesuňte jej do aktivní lišty a nastavení uložte.

Nyní si otevřete zadávání nebo úpravu nějakého obsahu, ve kterém se zobrazuje editor. Klepnete-li v něm na nově přidané tlačítko správce souborů IMCE, objeví se nové okno, kde v závislosti na nastavení profilu IMCE můžete nahrávat nové soubory a vybírat je pro vložení do textu:

1. Na boční straně si vyberete složku.

2. Vpravo uvidíte její obsah.

3. Klepnutím na soubor v obsahu uvidíte ve spodní části okna náhled obrázku.

4. Do textu jej umístíte klepnutím na tento náhled nebo nahoře na tlačítko Vybrat.

Obrázek 9.1 Správce souborů IMCE

Tip: Všimněte si, že při dalším vyvolání okna IMCE je zobrazen obsah naposledy prohlížené složky.

Tip: Správce souborů IMCE funguje i s jinými editory, které lze do Drupalu doplnit, například s nevizuálním BUEditorem (drupal.org/project/bueditor). Ostatně oba jsou od stejného autora.

Drupal a SEO

Dobrá optimalizace pro vyhledávače závisí nejenom na úpravě a struktuře obsahu (nadpisy, podnadpisy a vhodná klíčová slova v obsahu textu) a struktuře výstupního kódu HTML, což je především otázka použitého tématu vzhledu. Určitě budete chtít pracovat také s metatagy. Zapomeňte na klíčová slova v podobě metatagu keywords, na která vyhledávače už několik let nereflektují. Pro web úspěšný ve vyhledávačích potřebujete mít možnost zadávat jeho popisek, který je vidět ve výsledcích hledání. Potřebujete nástroj, který vygeneruje XML s mapou webu. A v neposlední řadě potřebujete mít možnost určovat, jaké obrázky využijí sociální sítě v případě, že někdo bude sdílet vaše stránky na Facebooku, Google+, Twitteru a jinde.

Pro popsané účely vám bude stačit dvojice modulů, která do jádra Drupalu potřebnou funkcionalitu doplní:

• Metatag (drupal.org/project/metatag) – pro práci s metatagy a propojením na sociální sítě

• XML Sitemap (drupal.org/project/xmlsitemap) – pro vygenerování mapy webu pro vyhledávače

Poznámka: V dalším textu předpokládám, že jste zapnuli všechny submoduly, které se vám s instalací těchto dvou modulů do Drupalu objeví v sekci rozšíření. Tedy Metatag, Metatag: Open Graph, XML sitemap, XML sitemap custom a XML sitemap engines.

Oprávnění

Dvojice nových oprávnění se objeví poté, co moduly aktivujete:

• Administer meta tags – umožňuje měnit nastavení metatagů na celém webu i v jednotlivých položkách (u obsahu); přidělit byste měli jen správci webu

• Administer XML sitemap settings – umožňuje měnit nastavení generátoru mapy pro vyhledávače; opět přidělte jen administrátorům webu

Nastavení modulu Metatag

Po zapnutí modulu přejděte do administrační části Nastavení −› Vyhledávání a metadata −› Metatag. Zde je možné určit, jaké budou výchozí metatagy pro různé části webu, například pro obsahové uzly nebo pro titulní stranu (není-li tvořena běžnou stránkou, ale výpisem). Podívejme se, jak právě titulní stranu upravit:

• Klepněte v této části administrace na odkaz Upravit u položky Front page.

• Vyplňte Název stránky – jde v podstatě o definici značky HTML title, tedy titulku v záhlaví prohlížeče, který se rovněž objeví jako název stránky ve výsledcích hledání.

• Do Popisu vložte maximálně 150znakový popis webu, který se objeví ve vyhledávači, ideálně do něj zabudujte i klíčová slova webu.

• Rozklepněte položku Open Graph a stejným způsobem vyplňte informace do zdejších políček Nadpis a Popis. Použijí se při sdílení obsahu na Facebooku, Google+ a dalších sociálních sítích.

• Do políčka Obrázek zadejte kompletní URL adresu odkazující na obrázek, který se má na sociální síti objevit v případě, že někdo bude sdílet výchozí adresu webu, tedy titulní stranu. Pro správné zobrazení na sociální síti by obrázek měl mít rozměry alespoň 1200 x 630 px. Pokud bude menší, může například automat Facebooku usoudit, že lepší bude nějaký jiný obrázek na stránce, který ale není úplně vhodný.

• Další údaje nejsou nutné vyplňovat, respektive si s nimi můžete pohrát, pokud je to pro daný web relevantní. Vysvětlivky jsou vždy pod políčkem.

• Nastavení nezapomeňte uložit.

Poznámka: Jestliže nastavení měníte až poté, co Facebook už zaindexoval danou stránku (titulku, článek…) na vašem webu, pak je nutné mu říci, že došlo ke změně v meta tagu. Jinak nemusí zareagovat na nastavení nového obrázku. V tom případě zadejte adresu webu nebo konkrétní stránky do formuláře na adrese developers.facebook.com/tools/debug a klepněte na tlačítko Debug. Po načtení pak pokračujte tlačítkem Fetch new scrape information.

Jak na metatagy u obsahu

Abyste mohli začít vyplňovat metatagy u obsahu webu, je nutné je přidat jako speciální typ políčka k jednotlivým typům obsahu – tedy podobným způsobem, jako se k němu připojují komentáře či běžná textová pole:

• Přejděte do sekce Struktura −› Typy obsahu a postupně si u všech zobrazte Správu polí.

• Klepněte na tlačítko Přidat pole a jako nové pole vyberte Meta tags. Nazvěte jej třeba Metatagy.

• Upřesňující nastavení prakticky nevyžaduje žádné změny, a tak jej jenom potvrďte.

• Nyní můžete jít do úpravy nebo vytvoření nového obsahu a na boční straně ve vertikálních záložkách uvidíte možnost vyplňování metatagů.

Jako výchozí hodnoty se uplatní vzorky z výše uvedeného výchozího nastavení modulu Metatag. Pokud chcete jiné hodnoty, pak je zde smažte a naplňte vlastními.

Obrázek 9.2 Editační formulář u článku s doplněnou možností úpravy metatagů

Nastavení a použití modulu XML Sitemap

Modul XML Sitemap se skládá ze tří částí. Jeho nastavení najdete v administrační části Nastavení −› Vyhledávání a metadata −› XML Sitemap. V podstatě zde není důvod cokoli výrazně měnit. Jestliže jste však aktivovali také další jeho součásti, můžete se přepnout na kartu Search Engines, kde lze aktivovat automatické zasílání mapy webu vyhledávačům v případě, že na webu dojde ke změně v obsahu. To je velmi praktický nástroj, jak vyhledávače na změny upozornit.

V nastavení jednotlivých typů obsahu v sekci Struktura −› Typy obsahu dále najdete volbu, zda se mají obsahové uzly patřící do daného typu do mapy pro vyhledávače zapisovat. V drtivé většině případů budete chtít, aby se tak dělo a vyhledávače indexovaly celý obsah webu, takže zde automatické umístění do mapy potvrdíte.

Samotnou mapu webu najdete na adrese /sitemap.xml. Pokud se zatím nenačítá nebo je prázdná, ujistěte se, že jste do ní zařadili všechny typy obsahu, které v ní chcete mít, a počkejte na spuštění cronu. Mapa se totiž aktualizuje při jeho běhu.

Tip: Na mapu pro vyhledávače není potřeba vkládat odkaz na webu. Do Googlu se posílá automaticky, můžete ji ale přidat pomocí Google Search Console (www.google.com/webmasters/tools).

Obrázek 9.3 Ukázka vygenerované mapy webu pro vyhledávače

Braňte se před spamem

Když na web umístíte kontaktní formulář, dovolíte nepřihlášeným uživatelům vkládat komentářem nebo prostě jen umožníte komukoli se do webu zaregistrovat, začnete dříve či později řešit spam. Někdy to může jít až tak daleko, že vám webhosting zablokuje v horším případě celý web, v lepším jen odesílání e-mailů z webu. Zvlášť, když zasíláte upozornění na komentáře e-mailem.

Nejjednodušším řešením je implementace nějaké ochrany před vyplňováním formulářů na webu ze strany robotů. K tomuto slouží v Drupalu modul Captcha (drupal.org/project/catpcha). Po nakopírování do Drupalu se vám objeví jako dvě nová rozšíření – Captcha a Image Captcha. Zapněte pro tuto chvíli jen první z nich.

Oprávnění modulu Captcha

S modulem Captcha se pojí dvojice oprávnění. Pečlivě zvažte, komu nastavíte zejména to druhé z nich:

• Administrace CAPTCHA nastavení – umožňuje nastavit modul samotný

• Přeskočit CAPTCHA – uživatelé s tímto oprávněním nejsou kontrolováni a mohou odesílat formuláře bez opisování kontrolních kódů

Nastavení modulu Captcha

To, jak a kde se Captcha na webu objeví, nastavíte v administrační části Nastavení −› Uživatelé −› CAPTCHA module settings. Zde věnujte pozornost zejména rozbalovací nabídce Výchozí typ testu. Pokud byste aktivovali i modul Image Captcha, objevil by se zde. K tomuto nastavení se ještě vrátíme.

Dále vyplňte Popis testu, kam vložíte text zobrazovaný uživatelům, proč po nich chcete vyplňování nějakého kontrolního textu. Nastavení uložte a přepněte se na kartu CAPTCHA Points, kde Drupalu sdělíte, na kterých místech chcete mít ochranu umístěnu. Zde jsou uvedeny názvy formulářů pro přidávání obsahu, uživatelů, komentářů či kontaktních formulářů, které se na webu nacházejí. Pro jednotlivé můžete nechat výchozí nastavení captcha, případně zde kontrolu zapnout/vypnout.

Obrázek 9.4 Základní formuláře chráněné modulem Captcha

Pokud zde formulář, kam chcete captchu umístit, nevidíte, postupujte následovně:

• Přepněte se na kartu CAPTCHA settings a zapněte volbu Přidat k formulářům odkaz na CAPTCHA administraci. Nastavení uložte.

• Přejděte na stránku s formulářem, pod kterým uvidíte odkaz, kterým jej přidáte do seznamu v CAPTCHA Points.

• Jakmile tak učiníte, odkaz pro Přidávání CAPTCHA k formulářům opět vypněte.

A konečně na kartě CAPTCHA examples se můžete přesvědčit, jak ochrana formuláře vypadá. Potřebujete-li vidět captchu v reálu, pak se z webu odhlaste a prohlédněte si například kontaktní formulář.

Vylepšení v podobě modulu Captcha Riddler

Základní nastavení modulu Captcha zobrazuje tzv. matematickou captchu. Uživatel musí zadat jednoduchý příklad spočívající v součtu dvou malých čísel. Bohužel spamovací stroje i zahraniční armády lidských spammerů dovedou tuto ochranu relativně snadno obejít. To samé platí pro opisování kódu z obrázku, který častokrát nastavíte tak, že jej sami máte problém rozluštit, ale komentářový spam na web stejně prochází. Proto jsme ani součástku v podobě modulu Captcha Image nezapínali.

Docela elegantním řešením je však žádost, aby uživatel zapsal správnou odpověď na nějakou otázku. Eliminujete tím zahraniční živé spammery a v podstatě i roboty. Jen musíte zvolit takovou otázku, kterou je vaše cílová skupina schopna zodpovědět. Tento typ captchy doplníte do Drupalu po instalaci modulu Captcha Riddler (drupal.org/project/riddler).

Obrázek 9.5 Porovnání základní matematické captchy a kontrolních otázek

• Po jeho instalaci přejděte do Nastavení −› Uživatelé −› CAPTCHA settings a volbu Výchozí typ testu změňte na Riddler. Nastavení uložte.

• Přejděte na nově doplněnou kartu Riddler Riddles.

• Přepište výchozí otázku například na Hlavní město našeho státu.

• Jako odpověď zadejte Praha,praha. To proto, aby byla odpověď uznána i v případě, že bude zadána malými písmeny.

• Tím je ochrana nastavena a můžete si ji zkusit prohlédnout v reálu.

Budete-li chtít, je možné tlačítkem Add another riddle přidat více kontrolních otázek, systém je pak bude náhodně vybírat. Sníží se tím pravděpodobnost, že by někdo živý zjistil odpověď a použil ji do nějakého spamovacího stroje.

Tip: V Drupalu můžete využít i propojení na antispamovou službu Mollom (mollom.com) za pomoci stejnojmenného modulu (drupal.org/project/mollom). Je od tvůrců Drupalu a do určitého počtu kontrol za den je zdarma. Funguje na principu analýzy textu z formuláře a vyžaduje, abyste uživatele na toto upozornili. Ne vždy je takové použití vhodné. Na druhou stranu zase uživatele nezatěžuje opisováním kontrolní captchy.

Plánovaná publikace obsahu

Jak jste doufám zjistili už předtím, než jste došli k této kapitole, Drupal umožňuje v editaci každého obsahového uzlu specifikovat datum a čas publikace. Ovšem tato informace je jen „pro oko“. Slouží k tomu, abyste mohli například zpětně ovlivnit, jaké datum se objeví u článku. Stavíte-li zbrusu nový web, je to k nezaplacení, protože určitě nechcete, aby se všechny nově přidané položky objevily se stejný datem, jako je spuštění webu. Vypadá lépe, když sahají trochu do historie.

Ovšem v reálném provozu například webového magazínu je zase potřeba, abyste skutečně mohli datum a čas publikace plánovat. Před víkendem si připravíte nějaký článek na pondělí ráno a potřebujete, aby byl automaticky zveřejněn, než přijdete do práce. Podobně v případě dovolené, kdy si články napíšete dopředu a pak je chcete postupně zviditelňovat automaticky. Tohle Drupal sám od sebe neumí, je tu však modul Scheduler (drupal.org/project/scheduler), který popisovanou funkcionalitu do Drupalu doplňuje.

Oprávnění

Modul Scheduler přidává do Drupalu trojici nových oprávnění:

• Administer scheduler – umožňuje nastavovat modul jako takový

• Schedule content publication – umožní plánovat vydávání obsahu; uživatel samozřejmě musí mít právo k jeho editaci

• View scheduled content list – umožňuje zobrazit seznam položek naplánovaných k publikaci

Jak pracovat s plánovanou publikací obsahu

Než začnete se Schedulerem pracovat, dovolte pár slov k jeho nastavení. To hlavní, společné pro všechny typy obsahu najdete v administrační části Nastavení −› Vytváření obsahu −› Scheduler. V podstatě tu není potřeba nic měnit. Snad jen v případě, že nechcete uživatele zdržovat vyplňováním času publikace, můžete jej přednastavit zde a uživatelé budou moci měnit jen datum naplánované publikace. Stačí k tomu zapnout volbu Allow users to enter only a date and provide a default time.

Vzhledem k tomu, že Scheduler pracuje s cronem, závisí provedení naplánované publikace na běhu cronu. Ten může být nastaven na nejmenší hodnotu jedna hodina, což znamená, že když naplánujete vydání článku např. na 13:30 a cron běhá vždy každou celou hodinu, článek se vydá až ve 14:00, třebaže bude mít zobrazenu informaci o půl druhé odpoledne. Jak z toho ven?

• V nastavení Scheduleru se přepněte na kartu Lightweight cron.

• Uvidíte zde příklad volání tzv. odlehčeného cronu, který spouští pouze kontrolu a provedení publikace ze Scheduleru.

• Vložte jej do serverového cronu nebo zavolejte zde uvedenou adresu pravidelně jiným způsobem, a to v takovém intervalu, v jakém potřebujete.

Nyní je potřeba zapnout u jednotlivých typů obsahu možnost plánovat publikaci. Je zbytečné ji používat tam, kde to nemá smysl, například u základních stránek. U článků ji naopak budete chtít aktivovat.

• Přejděte do sekce Struktura −› Typy obsahu a u vybraného typu obsahu klepněte na odkaz Upravit, který si rozbalíte klepnutím na šipku u tlačítka ve sloupci Operace.

• V úpravě typu obsahu přejděte do spodní části a klepněte na položku Scheduler. Zapněte možnost plánovat publikaci obsahu a případně i jeho ukrývání.

• Doporučuji zapnout i následně zobrazenou volbu Change content creation to match the scheduled publish time. Zajistí, že při naplánovaném vydání se automaticky upraví i datum vydání uvedené v článku.

• Nastavení uložte.

Obrázek 9.6 Nastavení automatické publikace článku

Nyní zkuste přidat nový článek nebo jiný typ obsahu, u kterého jste plánování publikace aktivovali. Ve vertikálních záložkách přibyla nová položka Scheduling options s políčkem pro zadání data a času publikace. Do data stačí klepnout a datum následně vybrat z rozbaleného kalendáře myší.

Markdown v Drupalu

Zejména mezi pokročilejšími uživateli internetu, blogery a tzv. geeky je populární speciální syntaxe markdown. Jedná se o lehký značkovací jazyk, který slouží k formátování textu i bez nutnosti zápisu značek HTML. Na HTML je zápis markdownu převáděn následným zpracováním, které v případě Drupalu zajistí doplněný filtr.

Markdown můžete nabídnout například uživatelům, kterým nechcete zapínat vizuální editor – ať už kvůli zabezpečení webu, nebo kvůli rychlosti načtení administračního rozhraní pro úpravu textu. Vzhledem k jednoduchosti a efektivitě zápisu je i jednodušší pro ty, kdo píší všemi deseti, použít markdown než napsat text a následně jej formátovat pomocí tlačítek v editoru HTML.

Jednoduchá ukázka markdownu:

Nadpis H1

==========

* odrážka

* odrážka

* odrážka

Nadpis H2

---------------

1. číslovaný seznam

2. další položka

3. jiná položka

![Alt text](obrazek.png)

[odkaz]: http://www.knihadrupal.cz

Jak vidíte, důležitost v zápisu markdownu hraje použití běžného textu, rovnítek, pomlček, hvězdičky, odsazení či hranatých závorek pro vytvoření značky HTML k obrázku a odkazu.

Jak zprovoznit markdown v Drupalu

V době přípravy knihy zatím nebyl k dispozici žádný editor, který by v Drupalu 8 podporoval markdown pomocí tlačítek pro ty uživatele, kteří si zatím na jeho syntaxi nezvykli. Postačí vám ale jednoduchý filtr a textový formát bez editoru:

• Nainstalujte si pomocný modul Libraries (drupal.org/project/libraries).

• Stáhněte si knihovnu PHP Markdown (michelf.ca/projects/php-markdown) a rozbalte ji do složky libraries/php-markdown. Vznikne tak složka libraries/php-markdown/Michelf aj.

• Nainstalujte a zapněte modul Markdown filter (drupal.org/project/markdown).

• Nemá žádné nastavení ani oprávnění, takže přejděte rovnou do sekce Nastavení −› Vytváření obsahu −› Text formats and editors.

• Klepněte na tlačítko Přidat formát textu. Nazvěte jej třeba Markdown, přiřaďte uživatelské role, které jej budou moci použít, nezapínejte editor a aktivujte jediný nově dostupný filtr – Markdown.

• Vespod se objeví nastavení výběru interpreteru pro Markdown. Vyberte z něj knihovnu PHP Markdown.

• Nastavení nyní můžete uložit a vyzkoušet si vytváření obsahu s novým formátem textu.

Obrázek 9.7 Ukázka zápisu markdownu v Drupalu 8

Upozornění: Pokud knihovnu PHP Markdown omylem nakopírujete do špatné složky a následně vytvoříte obsah s použitím nově vytvořeného formátu textu s filtrem pro markdown, zobrazí se vám místo uložené stránky jenom bílá obrazovka. Přejděte na stránku /admin, nakopírujte knihovnu podle výše uvedeného návodu, v Nastavení −› Vývoj −› Výkon vymažte cache a stránka by se vám měla již správně načíst.

Colorbox a jednoduchá galerie obrázků

Nejrůznějších lightboxových knihoven je do Drupalu integrována celá řada – v čele s modulem Lightbox2 (drupal.org/project/lightbox2) integrujícím stejnojmennou knihovnu. Pro mě osobně je však nejpříjemnější modul Colorbox (drupal.org/project/colorbox). Jeho vzhled jde pohodlně změnit pomocí kaskádových stylů, a co se týče nastavení a podpory u políček, nezaneřádí vám příslušné nabídky jako Lightbox2.

Instalace modulu Colorbox

Abyste mohli Colorbox v Drupalu použít, nestačí instalace modulu samotného. Nejprve si odkazem z jeho domovské stránky stáhněte javascriptovou knihovnu Colorboxu, a to ve verzi 1.x. Rozbalte ji, přejmenujte složku na colorbox a překopírujte ji do složky libraries v kořenové složce webu. Neexistuje-li, tak ji vytvořte.

Nyní nainstalujte klasickým způsobem samotný modul Colorbox. Modul nemá žádné oprávnění, funguje prakticky tam, kde nastavíte jeho zobrazování.

Nastavení Colorboxu

Základní úlohou modulu Colorbox je zobrazování větších náhledů při kliknutí na nějaký obrázek v obsahu webu. Využít jej tak můžete k prohlížení obrázků v různých galeriích. Ukážeme si proto konkrétně jeho nastavení v rámci ukázkového webu, který jsme spolu sestrojili v první kapitole:

• Přejděte do administrační části Struktura −› Typy obsahu.

• Ve sloupečku Operace si klepnutím na šipku vyberte funkci Správa zobrazení u typu obsahu Galerie.

• U políčka Fotografie nastavte Formát na volbu Colorbox.

• Klepněte na ozubené kolečko pro zobrazení doplňkového nastavení. V něm jako Content style image zvolte například Max 325 x 325. Obrázek v galerii na webu tak bude zobrazen s použitím tohoto stylu obrázku.

• Volbu Colorbox image style ponechejte na volbě Žádný (původní obrázek). Tím zajistíte, že když někdo klepne na malý obrázek na stránce, v Colorboxu se mu otevře původní velká fotka přizpůsobená rozlišení monitoru.

• V nabídce Galerie (seskupení obrázků) si můžete vybrat, zda se na webu po zobrazení colorboxového překryvu bude možné přepínat na další fotky a v jaké jejich množině. Zda bude možné procházení jen obrázků ze stejného políčka, z celé stránky, ze stejného záznamu a podobně.

• Nastavení potvrďte klepnutím na tlačítko Aktualizovat a poté vespod na tlačítko Uložit.

Zkuste se nyní podívat na stránku s fotogalerií, kterou jsme na webu připravili. Když si rozkliknete nějaký konkrétní záznam, už by obrázky neměly být přes celou plochu webu, ale měly by být zmenšené ve zvoleném stylu obrázku. Když na některý z nich klepnete, zobrazí se vám velká fotka překrývající web. Ve spodní části budou pod popiskem obrázku šipky pro přepínání na další fotky v galerii. Totéž lze učinit klepnutím do kraje obrázku.

V administrační části Nastavení −› Média −› Colorbox settings můžete upravit vzhled zobrazovaného colorboxového překryvu poté, co zde zapnete volbu Vlastní.

Tip: Pokud by vám vadilo, že Colorbox se ve výchozí podobě nastavení nezobrazuje na mobilních telefonech a místo něj se otevře rovnou odkazovaný obrázek, můžete to změnit v Nastavení −› Média −› Colorbox settings, když si rozklepnete Pokročilá nastavení a nastavíte volbu Mobile detection na Vypnuto.

Tip: Mým dalším oblíbeným lightboxovým klonem, který občas u Drupalu použiji, je modul prettyPhoto Formatters (drupal.org/project/prettyphoto_formatters). Je zajímavý tím, že ve spodní části zobrazuje náhledy obrázků v procházení galerii a navíc umí v lightboxovém překryvu zobrazovat třeba i videa z YouTube. V době psaní knihy bohužel nebyl k dispozici pro Drupal 8. To neznamená, že jej nelze použít. Jen musíme příslušný JavaScript implementovat sami na úrovni tématu vzhledu.

Formuláře a sběr dat od uživatelů

Jednou z novinek v Drupalu 8 je možnost libovolně přidávat další políčka do kontaktního formuláře. Díky tomu si můžete prakticky jakkoli přizpůsobit, co ve formuláři bude, rovnou z administrace. Můžete mít na jednom webu také řadu různých kontaktních formulářů. V některých případech byste ale možná ocenili, pokud by formulář pro sběr dat uměl něco více, než jen odeslat vyplněné údaje na e-mail – například uchovávání posbíraných údajů v databázi s možností jejich následného exportu třeba do Excelu.

Tuto funkcionalitu vám do Drupalu 8 doplní hned několik modulů. Začněme tím nejjednodušším.

Contact Storage

Pokud potřebujete jen kontrolu nad tím, zda uživatelé opravdu vyplnili nějaký z kontaktních formulářů, pomůže vám právě modul Contact Storage (drupal.org/project/contact_storage). Modul sám o sobě nemá žádné speciální nastavení ani neposkytuje žádné nové oprávnění. Vystačí si s tím, jaká práva máte nastavena k modulu Contact.

• Po zapnutí Contact Storage zkuste cvičně odeslat několik zpráv přes kontaktní formuláře, které máte na webu. Následně přejděte do administrační části Struktura −› Contact forms −› Seznam.

• Zde se bude postupně plnit seznam položek s vyplněnými formuláři.

• Potřebujete-li se zpětně podívat, co někdo vyplnil, stačí klepnout na tlačítko Upravit u daného záznamu.

Jak je v Drupalu 8 dobrým zvykem, řada výpisů je tvořena zabudovaným modulem Views a stejně tak je tomu i v případě výpisu reakcí z kontaktních formulářů. Pomocí kontextového odkazu se můžete přepnout do úpravy tohoto pohledu a libovolně si přidat nebo odebrat další sloupečky z výchozího seznamu.

Obrázek 9.8 Přehled reakcí z kontaktního formuláře

Tip: Modul Contact Storage se hodí například v situaci, kdy vám někdo tvrdí, že poslal zprávu přes formulář, ta vám ale na e-mail nedorazila. V e-mailu může být problém na řadě míst. Ale díky tomuto modulu můžete v databázi Drupalu dohledat, co se ve zprávě psalo a kdy byla odeslána.

Webform

Z poněkud jiného soudku je modul Webform (drupal.org/project/webform). Pomocí něho sestavíte například vícekrokové formuláře a rozmístíte jednotlivé prvky formuláře do mřížky. V době Drupalu 7 byl tento modul na řadě webů prakticky nezbytný, protože znamenal možnost vytvářet formuláře pro sběr dat od uživatelů i bez toho, že byste někdy museli programovat.

Typické scénáře použití tohoto modulu:

• Sběr životopisů pro uchazeče o zaměstnání

• Sběr soutěžních odpovědí spolu s adresami soutěžících

• Rozsáhlé vícekrokové průzkumy

• Cokoli, co potřebujete schraňovat, později exportovat do Excelu a průběžně posílat na různé e-mailové adresy

• Zobrazení odkazu pro stažení souboru poté, co někdo vyplní formulář (například kvůli sběru e-mailových adres)

Řadu věcí lze jistě řešit i pomocí výchozího modulu Contact v Drupalu 8. Webform vám však dovoluje pružněji reagovat na to, co se stane po odeslání formuláře. Zda se zpráva s poděkováním objeví na nové stránce s měřicím kódem pro Google Analytics a hodnocení konverzí nebo dojde k přesměrování úplně jinam. Zda se pošlou nějaké e-maily a v jakém tvaru. A podobně.

Oprávnění

Modul Webform přidává do Drupalu hned celou řadu nových oprávnění:

• Access all webform results – zpřístupní možnost prohlížení všech odeslaných dat z jakéhokoli formuláře webformu

• Access own webform results – totéž, ale jen pro formuláře, které si uživatel vytvořil

• Access own webform submissions – umožňuje se podívat, co daný uživatel kdy do jakého formuláře vyplnil

• Content authors: access and edit webform components and settings – přístup k definicím formuláře při vytváření nového obsahu

• Delete all webform submissions – mazání všech odpovědí z formulářů

• Delete own webform submissions – mazání jen vlastních odpovědí z formulářů

• Edit all webform submissions – umožňuje upravovat jakékoli odpovědi z formulářů

• Edit own webform submissions – umožňuje měnit jen vlastní odpovědi z formulářů

Jelikož modul Webform přidává ještě stejnojmenný typ obsahu, zkontrolujte a nastavte oprávnění i pro něj.

Tvorba formuláře s Webformem

Vytvoření formuláře je poměrně jednoduché. Začnete tím, že půjdete do administrační sekce Obsah −› Přidat obsah a vytvoříte nový Webform. Jakmile se tak stane, najdete u něj kartu Webform, ve které je možné připravit jednotlivá formulářová políčka.

• Do políčka New component name zadejte název nového pole, které chcete přidat do formuláře.

• Z rozbalovací nabídky Typ vyberte formulářový prvek, který bude sloužit ke sběru dat.

• Klepněte na tlačítko Přidat.

• Drupal vám nyní nabídne upřesňující nastavení, jako popisek pole, výchozí hodnotu, nastavení povinnosti pole před odesláním formuláře vyplnit atd.

• Tímto způsobem lze přidat libovolný počet políček do formuláře a na kartě Zobrazit si pak prohlédnout výsledek.

Většina typů políček, která lze do formuláře přidat, by měla být srozumitelná. Z těch méně zřejmých bych vyzdvihl Page break. Jde o speciální políčko, které můžete přetáhnout mezi libovolné další komponenty formuláře a tím určit, na jaké jednotlivé strany se formulář rozláme a která políčka budou na které stránce. Často používané je také pole Značkování, díky kterému je možné do formuláře vložit mezi jednotlivá políčka jakýkoli obsah HTML, včetně obrázku.

Na kartě Webform najdete i přepínače na další položky. K dispozici máte prohlížeč vyplněných odpovědí s možností je exportovat například do Excelu či jiného formátu. Je zde rovněž záložka E-maily, kde nastavíte, na které e-mailové adresy se data z formuláře po jeho vyplnění odešlou. Všimněte si, že odesílat můžete více reakcí a třeba i na e-mailové adresy, které někdo ve formuláři vyplnil. Tím elegantně sestavíte reagující automat.

Obrázek 9.9 Ukázka rozhraní pro tvorbu webových formulářů pro sběr dat od uživatelů

Tip: Ujistěte se, že máte pro tento typ obsahu povoleno zobrazení formuláře ve správě typů obsahu a v nastavení zobrazení.

eForm

Na předchozích řádcích uvedený modul Webform má jistou nevýhodu v tom, že typy políček, které je možné do formuláře přidávat, jsou omezeny tímto modulem. V době Drupalu 7 se proto začal prosazovat koncept náhradního řešení v podobě modulu, který bude mít podobné funkce, avšak políčka, která půjde do formuláře přidávat, budou z běžné škály políček, která jsou v jádře Drupalu, případně je poskytují nějaké doplňkové moduly – podobně jako u výchozího kontaktního formuláře modulu Contact.

Vznikl tak modul eForm (drupal.org/project/eform). Jeho funkcionalita je podobná jako u Webformu, ale ovládá se na poněkud jiných místech v administraci.

Poznámka: V době přípravy knihy netuším, zda nakonec potenciální souboj o formulářové řešení vyhraje Webform, nebo eForm. Jisté je, že Webform má toho času větší uživatelskou základnu.

Oprávnění

Modul eForm poskytuje pětici nových oprávnění:

• Administer EForm Submissions – umožňuje libovolně pracovat s odeslanými údaji z formulářů

• Administer EForm types – umožňuje definovat formuláře jako takové

• Formulář: Delete own submissions – povolí mazání vlastních dat z formuláře

• Formulář: Edit own submissions – povolí úpravu vlastních dat z formuláře

• Formulář: Submit – umožní odeslat vyplněné formuláře

Práce s modulem eForm

Jakmile máte modul eForm nainstalovaný, přejděte do administrační části Struktura −› EForm Types. Zde budete tlačítkem Add EForm Type přidávat jednotlivé formuláře:

• Vyplňte název formuláře zobrazený i jako nadpis jeho stránky a projděte jednotlivé vertikální záložky.

• V první – Access settings – nastavujete, kdo bude moci formulář vyplňovat.

• Důležité je rovněž vyplnit údaje na kartách Nastavení formuláře pro odeslání a Submission page settings. Na první určujete Nadpis a text na stránce s formulářem, druhé nastavení se pak aplikuje na stránku zobrazenou jako poděkování za vyplněný formulář.

Po přidání se vám formulář objeví v seznamu, kde pomocí tlačítka Správa polí budete moci přidávat nová políčka formuláře. Naprosto klasickým způsobem – jako u typů obsahu, uživatelů nebo třeba formulářů modulu Contact.

V seznamu Struktura −› EForm Types pak stačí klepnout na název formuláře a dostanete se na stránku, která jej zobrazuje. Zajímají-li vás vyplněné odpovědi, klepněte v přehledu naopak na odkaz Submissions. Zde podobně jako u Webformu máte možnost procházet a měnit vyplněné údaje, případně si je stáhnout v nějakém souboru do počítače.

Obrázek 9.10 Definice polí u eFormu je podobná jako u jiných entit

Jak na video a jeho přehrávání

Práci s obrázky zvládá Drupal 8 poměrně dobře, nechybí mu ani podpora pro responsivní obrázky a posílání různých rozměrů fotek do prohlížeče uživatele v závislosti na displeji zařízení, kterým si web prohlíží. Ovšem žádnou speciální podporu pro vkládání videa Drupal nemá.

Jednou z možností je nahrávat vše na YouTube či podobnou službu, tam si vygenerovat značku iframe a tento kód pak vložit při vypnutém editoru do těla stránky nebo článku v Drupalu. Jde to však i o něco příjemněji, a to pomocí modulu Video (drupal.org/project/video), který poskytuje speciální typ políčka pro vkládání videa.

Jak přidat políčko pro zobrazení videa

Po zapnutí modulu Video se neobjeví žádná nová oprávnění. Počítá s tím, že vše je dáno nastavením, kdo může definovat políčka u typů obsahu a jiných entit a kdo je pak může vyplňovat. Vlastní speciální nastavení tento modul také nemá, podívejme se tedy na to, jak bychom mohli přidat políčko pro vkládání videa například k článku:

• Přejděte do administrační sekce Struktura −› Typy obsahu a klepněte na tlačítko Správa polí u článku.

• Pokračujte tlačítkem Přidat pole a jako typ přidávaného políčka vyberte Video. Pole tak i nazvěte a pokračujte dále.

• Upřesňující nastavení jen potvrďte, případně upravte počet akceptovaných hodnot.

• Jakmile je pole přidáno, přepněte se na kartu Manage form display a najděte zde přidané políčko pro video.

• V prvé řadě si vyberte, zda bude toto pole sloužit pro nahrávání videa z počítače a jeho následnou konverzi na serveru, nebo zda bude jeho účelem zobrazovat videa z YouTube, Vimeo, Facebooku a dalších služeb, a to včetně náhledových obrázků.

• Obojí má pak pod ozubeným kolečkem doplňkové nastavení. V případě nahrávaného videa určete povolené typy souborů, cílovou složku na webu a případně omezte maximální velikost souboru.

• U vkládaného videa zase zapněte podporované poskytovatele a specifikujte složku, do které budou ukládány náhledy na video.

• Nastavení nezapomeňte potvrdit a následně i vespod Uložit.

Zobrazení videa pak už určíte klasicky na kartě Správa zobrazení, kde si můžete vybrat buď z přehrávače, nebo z náhledového obrázku, který modul z videa automaticky připraví. Stejným způsobem můžete s tímto políčkem pracovat i v modulu Views.

Tip: Díky integraci s Views a možnosti vytvářet náhledy videa tak můžete vytvořit různé videogalerie a výpisy, které jsou podobné tomu, co lze nalézt třeba přímo na YouTube.

Obrázek 9.11 Nastavení políčka pro vkládání videa z YouTube

Drush

Pro práci na serveru by se vám mohl hodit pomocník v podobě nástroje Drush (drush.org). V předchozích knihách o Drupalu jsem jej poněkud přehlížel, což možná byla chyba. Jde totiž o šikovný nástroj pro práci v příkazovém řádku, pomocí něhož velice rychle provedete nejrůznější administrativní úkoly v rámci své instalace Drupalu. Použití modulu má jedinou obtíž. Jako nástroj fungující v příkazovém řádku vyžaduje jednak přístup SSH k serveru, jednak tam musí být nainstalovaný. A bohužel ne každý hosting toto nabízí. I těch s přístupem SSH k příkazovému řádku je v českých vodách minimum. Zároveň asi ne každý se pustí do provozu virtuálního či dedikovaného serveru jen proto, aby si Drush vyzkoušel.

Samotný název tohoto nástroje vychází ze slovního spojení Drupal shell. Jedná se o sadu příkazů, kterými poté, co na serveru vejdete do složky s Drupalem, můžete provádět:

• Aktualizace modulů i jádra samotného

• Instalovat nové moduly

• Mazat cache

• Spouštět SQL dotazy

• Provádět celou řadu úkolů jinak běžně dostupných z administrace

Výhodou použití příkazového řádku je rychlost. Typickým úkolem, u kterého Drush oceníte, je aktualizace webu a použitých modulů. Normálně byste moduly aktualizovali přes administraci, počkali na jejich stažení, spustili aktualizaci databáze. Jádro Drupalu byste ručně překopírovali přes (S)FTP a strávili u toho kvůli množství malých souborů věčnost.

Použijete-li Drush, je vše mnohem rychlejší:

• Příkazem cd se na serveru přesuňte do složky, ve které máte nainstalován Drupal.

• Spusťte příkaz drush pm-update.

• Drush najde aktualizace, bleskurychle je stáhne, vyžádá si potvrzení stiskem klávesy Enter, provede aktualizace a následně po odsouhlasení i aktualizaci databáze.

• K tomu navíc automaticky vytvoří i zálohu přepisovaných souborů ve vaší domovské složce na serveru.

• Během minuty tak máte hotovo to, co byste zdlouhavě dělali ručně přes (S)FTP.

Poznámka: Drush není jedinou možností, jak Drupal ovládat v příkazovém řádku. K dispozici je i propojení na nástroj Composer. Ten však slouží k instalaci modulů nebo doplňkových knihoven, které na něm závisejí, zatímco Drush plní spíše administrační úkoly.

Drupal Console

Z podobného soudku jako na předchozí straně zmíněný Drush je i nástroj Drupal Console (drupalconsole.com). Ten se objevil s příchodem Drupalu 8 a pomůže vám s úkoly, které zahrnují:

• Stažení aktuální nebo konkrétní verze Drupalu 8 do vybrané složky a jeho instalaci

• Vytvoření kostry nového modulu, třídy, tématu vzhledu

• Vytvoření koster pluginů a dalších položek při vývoji vlastních modulů

• Spuštění migračního procesu při propojení s webem na starší verzi Drupalu

• Správu uživatelů z příkazového řádku a mnoho dalšího

Nejčastěji jej zřejmě použijete pro rychlé stažení a instalaci nového Drupalu na serveru a pro sestavení kostry tématu vzhledu. Přes příkazový řádek jen zadáte požadované údaje a Drupal Console vytvoří potřebné soubory a naplní je příslušnými hodnotami.

Instalace Drupal Console

Je poměrně pravděpodobné, že na rozdíl od nástroje Drush nebude Drupal Console součástí balíčkovacího systému vašeho serverového systému. Instalaci na linuxovém serveru proto proveďte následovně:

• Stáhněte si aktuální verzi nástroje:
curl https://drupalconsole.com/installer -L -o drupal.phar

• Přesuňte jej do složky, odkud půjde spouštět v celém systému:
mv drupal.phar /usr/local/bin/drupal

• Nastavte mu práva pro spouštění:
chmod +x /usr/local/bin/drupal

• Přesuňte konfigurační soubory do své domovské složky na serveru:
drupal init --override

Tím máte Drupal Consoli připravenu na svém serveru. Čas od času ji také můžete aktualizovat, k čemuž poslouží příkaz drupal self-update. Pokud nechcete studovat dokumentaci, zavolejte příkaz drupal list, který zobrazí kompletní výpis příkazů Drupal Console a jejich použití.

Použití Drupal Console

Výše zmíněné instalace Drupalu a sestavení kostry tématu vzhledu zrealizujete po přepnutí do příslušné složky dvojicí příkazů:

• drupal site:new novyweb

• drupal generate:theme (konzole se bude postupně ptát na název tématu vzhledu, breakpointy, regiony, rodičovské téma a další údaje)

Poznámka: Pokud se obecně bojíte příkazového řádku, dejte mu šanci. Uvidíte, že počáteční marné pokusy a čas nad nimi strávený se vám při tvorbě většího počtu webů ve výsledku vrátí.

Devel

Ať už se pustíte do vývoje vlastního modulu dodávajícího nějakou specifickou funkcionalitu, nebo do tvorby tématu vzhledu, oceníte modul Devel (drupal.org/project/devel). Oceníte jej ale i v případě, že si vystačíte s tvorbou webu jen v prostředí jeho administrace. Kromě různých vývojářských nástrojů a pomůcek totiž zobrazí i informace o náročnosti generování jednotlivých stránek, z čehož můžete usoudit, která komponenta brzdí výkon webu. Jeho součástí je i jednoduchý generátor slepého obsahu. Ten se vám může hodit, když potřebujete odladit nějaké výpisy generované modulem Views, ale nechcete kvůli nim trávit čas ruční tvorbou řady položek a nahráváním obrázků k nim. I ty je schopen Devel vytvořit zcela automaticky.

Poté, co jej nakopírujete do Drupalu, najdete v sekci Rozšíření několik jeho součástek:

• Devel – základní modul, poskytuje například funkce dsm() či dpq() sloužící vývojářům modulů pro zobrazení ladicích informací

• Devel generate – generátor výplňového obsahu

• Devel Kint – zapouzdření ladicího nástroje Kint

• Devel Node Access – poskytuje blok a stránku zobrazující údaje o přístupu k obsahovým uzlům

• Web Profiler – přidává do Drupalu ladicí lištu z frameworku Symfony

Oprávnění

Výše uvedené součástky modulu Devel přidávají následující oprávnění:

• Access developer information – umožňuje zobrazovat vývojové informace vypisované pomocí speciálních funkcí nebo volbou v nastavení modulu

• Execute PHP code – přidává blok, ve kterém je možné spouštět libovolný kód v PHP

• Switch users – umožňuje přepínání mezi uživatelskými účty pro potřeby ladění, jak se tyto různě chovají

• Access kint information – zpřístupňuje výstup nástroje Kint

• Access DNA information – umožňuje zobrazit informace o přístupu k obsahovým uzlům

• Administer devel_generate – umožňuje generovat výplňový obsah a měnit nastavení generovacího modulu

Upozornění: Určitě chápete, že tato nastavení představují potenciální riziko, a měli byste je přidělit jen správcům webu. Pravdou nicméně je, že na webu nasazeném již do produkčního režimu by modul Devel vůbec neměl být aktivní.

Možná použití modulu Devel

Zkuste si zapnout součástku s vývojářskou lištou z frameworku Symfony. Ve spodní části webu s Drupalem uvidíte pás s informacemi o délce generování stránky a spotřebované paměti pro běh skriptu PHP. To může být mimo jiné i pomocným údajem k tomu, co požadovat po hostingu, na který chcete web po dokončení vývoje umístit.

Většina ze zobrazených položek je proklikávací, takže se můžete dostat i k tomu, která část výpisu dat na webové stránce má na serveru největší režii.

Obrázek 9.12 Lišta ze Symfony zobrazená ve spodní části webu s Drupalem

My se nyní zaměřme spíše na rozšíření Devel Generate, konkrétně na hromadné vytvoření výplňového obsahu:

• Přejděte do administrační části Nastavení −› Vývoj −› Generate content.

• Zatrhněte typ nebo typy obsahu, které chcete vygenerovat.

• Zadejte počet uzlů pro jednotlivé vytvářené typy obsahu.

• Dále můžete specifikovat počty komentářů, časové období pro nastavení data publikace, délku nadpisů a jazykovou mutaci.

• Po klepnutí na tlačítko Generate chvíli počkejte na dokončení úkolu a poté si na webu nebo v administrační části Obsah prohlédněte výsledek.

Obrázek 9.13 Příprava pro vygenerování výplňového obsahu včetně obrázků

Poznámka: Všimněte si, že máte-li u zvoleného typu obsahu obrázkové políčko, je automaticky vyplněno obrázkem skládajícím se z barevným obdélníků.

Tip: Chcete-li mít jistotu, že Devel Generate opravdu vyplní všechna políčka při automatickém vytváření obsahu, nastavte je v Struktura −› Typy obsahu jako povinná. U číselných hodnot zase určete maximální a minimální hodnotu, jinak můžete počítat s nesmyslnými údaji, které by Devel Generate použil.

Display Suite – návrh rozvržení obsahu

Na různých místech knihy jsem zmiňoval možnosti administrační části Správa zobrazení. Ať už jde o běžný obsah, o kategorie nebo třeba uživatele, vždy máte možnost ovlivnit, která z definovaných políček se u dané entity zobrazí, v jakém pořadí a s jakým nastavením.

I přes veškerou flexibilitu a posun v této oblasti oproti Drupalu 7 však Drupal 8 neumí některé věci, které by se vám při tvorbě webu mohly hodit. Například:

• Poskládat dvě políčka vedle sebe

• Přesunout ve výpisu článků obrázek před nadpis nebo na jednu stranu zarovnat obrázek a na druhou nadpis s perexem

• Definovat si vlastní políčko pomocí nahrazovacích vzorků nebo třeba PHP

• Definovat vlastní layouty, do kterých budete obsah skládat

Řadu zmíněných věcí lze s úspěchem řešit na základě šablon. V případě obsahu tedy stačí do tématu vzhledu překopírovat soubor node.html.twig a v něm upravit výpis políček a dalších položek obsahu. Nicméně toto řešení jednak vyžaduje více zásahů do tématu vzhledu, jednak už není dostatečně flexibilní v tom, že byste v administraci jednoduše mohli přesunout například ikonku článku z levé strany na pravou.

Řešení ovšem nabízí modul Display Suite (drupal.org/project/ds). Po zapnutí v Drupalu pod definicí zobrazovacího režimu nabídne přepnutí do svého layoutu, ve kterém může být každá položka entity rozmístěna do různých sekcí v rámci dané entity. Jinými slovy tak můžete říci, že článek zobrazený ve formě úvodníku na nějakém výpisu článků bude mít vždy na levé straně ikonku článku, vpravo pak nadpis, perex a třeba datum vydání. V detailu pak budou políčka poskládána do jiného počtu sloupců či rozvržení.

Poznámka: Pozor, Display Suite nezaměňujte s nějakým nástrojem pro tvorbu rozvržení prvků v rámci celé webové stránky. Mluvíme vždy o konkrétním typu entity zobrazovaném v hlavní obsahové části webu. Nebo jinde v bloku definovaném pomocí Views.

Upozornění: K instalaci modulu Display Suite budete potřebovat ještě modul Layout plugin (drupal.org/project/layout_plugin). Bez něj není možné Display Suite v Drupalu 8 aktivovat.

Oprávnění modulu Display Suite

Modul Display Suite nabídne po instalaci v sekci Rozšíření několik položek. Konkrétně základní Display Suite, potom Display Suite Devel s vývojářskými pomůckami (pro další popis netřeba zapínat), Display Suite Extras a Display Suite Switch View Mode. Tato rozšíření nabídnou následující oprávnění:

• Administer Display Suite – umožní měnit nastavení modulu samotného a pracovat s ním v režimech zobrazení

• Adminsiter classes – umožní nastavit třídy doplňované modulem při jeho zobrazení

• Administer fields – umožní manipulovat s políčky u jednotlivých entit

Jak nastavit vlastní zobrazení úvodníku

Několikrát jsem zde zmínil možnost či potřebu zobrazení ikonky článku rovnou vedle nadpisu a perexu. U vzorového webu vytvořeného na začátku knihy máme připravenou sekci s blogem, do které vypisujeme obsah typu článek. Zkusme jej nyní požadovaným způsobem upravit právě pomocí modulu Display Suite:

• Přejděte do administrační části Struktura −› Typy obsahu. U Článku rozklepněte šipku u tlačítka ve sloupci Operace a zvolte Správa zobrazení.

• Ve správě zobrazení se nyní přepněte do nastavení pro režim Úvodník.

• Ve spodní části pod přehledem políček najdete novou položku Layout for article in teaser. U ní v rozbalovací nabídce Select a layout vyberte rozvržení Two column layout. Objeví se vám náhled, jak by rozložení článku v úvodníku vypadalo. Potvrďte jej klepnutím na tlačítko Uložit.

• Všimněte si, že nyní přibyla další políčka, která lze přesouvat mezi pravým a levým sloupcem. Poskládejte je tedy tak, aby vlevo byl jen náhledový obrázek článku a vpravo vše ostatní, co v úvodníku chcete zobrazit.

• Nyní nastavení opět potvrďte a zkuste si na stránce s blogem prohlédnout výsledek.

Obrázek 9.14 Při výběru konkrétního rozvržení uvidíte i jeho náhled, jak by pak prvky v dané entitě mohly být rozmístěny

Bohužel použití modulu Display Suite vás úplně od kódování neoprostí. Jak brzy po provedené úpravě zjistíte, tím, že jsou dva pruhy obsahu definovány jako stejně široké, nevypadá výpis článků úplně přirozeně. Určitě by chtěl doladit pomocí CSS. Ale i přesto poskytuje rychlejší možnost, jak web sestavit, než se zdržovat kódováním jednotlivých políček a jejich HTML v šabloně.

Tip: Za určitých okolností se však kódování při použití layotů z Display Suite vyhnete. To v případě, že používáte nějaké téma vzhledu postavené na responzivní mřížce Bootstrap (drupal.org/project/bootstrap). Pak stačí doplnit modul Display Suite Bootstrap Layouts (drupal.org/project/ds_bootstrap_layouts), který přidá do výběru rozvržení řadu dalších položek, které mají různě rozměřené sloupce a pohodlněji se vám s nimi bude pracovat. V praxi je tento modul nasazen například na webu Stíhačky.cz, toho času však ještě na Drupalu 7.

Rules

Na začátku kapitoly s popisem modulů obsažených v jádře Drupalu jsem zmiňoval první modul v abecedním seznamu Actions. Tento pozůstatek z Drupalu 7 umožňuje definovat různé akce, například odeslání e-mailu s nějakým upozorněním na nový obsah nebo nově zaregistrovaného uživatele, ovšem chybí mu jeho souputník v podobě modulu Trigger, který tyto akce dovedl spouštět.

Doporučeným způsobem, jak nyní naplánovat nějaké i složitější akce, které se v Drupalu odehrají poté, co se stane něco jiného, je použití doplňkového modulu Rules (drupal.org/project/rules). V něm nastavíte pravidlo, podle kterého se má něco provést, a následně určíte, co se má provést.

Oprávnění modulu Rules

Jakmile modul Rules zapnete, přibude vám v Drupalu tato nová sada oprávnění. Všechna byste v praxi měli přidělit jen správcům webu.

• Administer Rules – umožňuje měnit základní nastavení modulu

• Administer Rules components – slouží pro manipulaci s jednotlivými komponentami naplánovaných pravidel

• Administer Rules reactions – umožňuje definovat reakce v závislosti na nějakých událostech

• Bypass Rules access control – umožňuje provedení definovaných pravidel bez ohledu na to, zda u daného uživatele vyhovují i ostatní přístupovým oprávněním

• View Rules debug tool – umožňuje prohlížet vývojový log provedených akcí

E-mailové upozornění na nový komentář

Jako ukázku použití modulu Rules si vyzkoušíme sestavení e-mailu, který upozorní správce webu pokaždé, když někdo vloží k nějakému obsahu na webu nový komentář.

• Přejděte do administrační části Nastavení −› Postup práce −› Rules.

• Zůstaňte na záložce Reaction rules a klepněte na tlačítko Add reaction rule, kterým vyvoláte formulář pro přidání nového reakčního pravidla.

• V něm vyplňte název – Upozornění na nový komentář a jako reakci na událost vyberte v rozbalovací nabídce Comment −› After saving new comment.

• Nastavení potvrďte tlačítkem Uložit. Tím se dostanete do druhé části modulu, kde přidáváte podmínky a akce.

• Zkusíme z upozorňování vyloučit komentáře, které do webu vložil jeho hlavní správce. Klepněte na tlačítko Přidat podmínku a v dalším kroku vyberte Data comparison – porovnání hodnot. Pokračujte do další části, kde v poli hodnota uveďte entity:uid, operátor nastavte na != a vespod jako hodnotu pro porovnání jedničku, tedy číslo prvního vytvořeného uživatele. Podmínku uložte. Jinými slovy v ní říkáte, že následující pravidlo se uplatní jen v případě, kdy je číslo uživatele vloživšího komentář odlišné od jedničky.

• Pokračujte tlačítkem Přidat akci. Zvolte Systém −› Odeslat e-mail. Vyplňte údaje odesílaného e-mailu, tedy adresu, předmět, tělo zprávy a další.

• Nyní celou definici nového pravidla uložte a nezbývá než vyzkoušet, zda definovaná akce funguje.

Obrázek 9.15 Rozhraní pro definici nového pravidla

Poznámka: Podmínka Data comparison vám umožňuje definovat složitější porovnávání hodnot u entity, na kterou reagujete. Použijte ji ale až poté, co se ujistíte, že v nabídce podmínek není taková, která by vám rovnou vyhovovala. Nastavení Data comparison je totiž to nejsložitější a vyžaduje správné zapsání údajů.

Tip: V přehledu definovaných pravidel najdete také záložku Komponenty. I zde můžete definovat nová pravidla. Komponenty jsou zamýšleny jako samostatné sady definic, které můžete později volat z jiných pravidel. Hodí se v případě, že vytváříte různé složitější definice různě se opakující a některé části jejich nastavení chcete měnit z jednoho místa.

Feeds

Na závěr výběru různých užitečných doplňkových modulů pro Drupal 8 jsem si nechal modul Feeds ( drupal.org/project/feeds ). Poslouží vám v momentě, kdy potřebujete do Drupalu importovat obsah z jiných zdrojů, například ze souboru CSV, XML nebo z výstupů RSS z jiných webů. Na rozdíl od zabudovaného Aggregatoru, který rovněž dovede zpracovávat cizí výstupy RSS, však z importovaných dat vytváří běžný obsah (ale i jiné entity). Importní pravidla lze nastavit i tak, že se budou spouštět opakovaně. Často se využívá například na webech, kde se zobrazuje nějaká inzerce z realitních kanceláří, nebo na eshopech, které do sebe pomocí modulu Feeds importují zboží evidované v jiných aplikacích.

Oprávnění modulu Feeds

Modul Feeds poskytuje dvě nová oprávnění:

• Access the Feed overview page – zpřístupní stránku s přehledem importovaných zdrojů

• Administer Feeds – umožňuje vytvářet nová importní pravidla

Příprava importu cizího obsahu

Importních pravidel, která budou do Drupalu zcela automaticky přidávat nějaký nový obsah, můžete definovat celou řadu. Jejich seznam najdete v administrační části Struktura −› Feed types . Postup definice je následující:

• Klepněte na tlačítko Add feed type pro přidání nového feedu. V následně zobrazeném formuláři jej nějak pojmenujte.

• V rozbalovací nabídce Fetcher určujete, odkud se vezme zdroj importu. Zvolíte-li adresář, musíte vstupní soubor dostat nějakým způsobem do adresářové struktury Drupalu a zvoleného umístění. Méně často asi využijete volbu Stáhnout , která importuje vstupní data z jiné webové adresy. A konečně volba Nahrát vám dovolí vstupní soubor nahrávat na stránce s přehledem feedů.

• Volba Parseru v podstatě určuje typ dat, která budete zpracovávat – zda půjde o CSV, XML nebo RSS zdroj či jiná. Různé další moduly sem mohou přidat další podporované formáty.

• Procesor určuje, jaké entity se importem vytvoří. Na výběr máte Uzly , Uživatele a  Termíny taxonomie .

• A konečně v závislosti na volbě procesoru pak vybíráte buď typ vytvářeného obsahu, nebo slovník, do kterého se importují termíny.

• Ve spodní části najdete trojici vertikálních záložek. V Nastavení specifikujete, jak často se bude import provádět.

• Fetcher settings se mění v závislosti na jeho volbě a buď zobrazí nastavení prohledávaných souborů v adresáři pro import, nebo délku čekání na odezvu ze serveru, odkud se budou stahovat vstupní data.

• Na záložce Processor settings nakonec určete, zda se mají importované položky v případě kolize přepisovat, aktualizovat nebo ignorovat, nastavte vlastníka a další detaily.

Nastavení nyní uložte. Jakmile tak učiníte, objeví se vám u definice feedu další záložky, ve kterých upřesňujete jeho nastavení.

Obrázek 9.16 Úprava definice importního feedu

Mapování položek

Pokud jste pozorně sledovali předchozí nastavení, možná vám blesklo hlavou, jak systém ví, které položky ze vstupního zdroje má k čemu přiřadit. Jak například pozná, který sloupeček v CSV obsahuje jméno článku a který nese informaci o datu vydání. Právě pro toto upřesnění se vám po uložení prvotního nastavení feedu zprovozní karta Mapování:

• Nejprve zde v rozbalovací nabídce Cíl zvolte položku, do které chcete v rámci importované entity uložit nějaká data ze vstupního feedu.

• Následně se zobrazí volba také ve sloupci Zdroj , kde si určíte stejná data, tentokrát ale specifikujete, kde se nachází ve vstupním zdroji.

Nastavení vždy uložte a postupně takto přidejte tolik mapování, kolik máte vstupních sloupců, uzlů v XML a podobně.

Spuštění importu

Nyní tedy máte definovány jednotlivé typy importních feedů a máte nastaveno mapování položek. Určujete tedy, z jakého místa ve zdroji se co a kam v importované entitě přiřadí. Zbývá se podívat na stránku, na které budete importy moci jednak ručně spouštět, jednak specifikovat, které konkrétní adresy mají importovat.

• Přejděte do administrační části Obsah −› Feeds.

• Klepněte na tlačítko Přidat zdroj a ve formuláři specifikujte jeho název a adresu, na které jsou umístěna vstupní data.

• Ve spodní části můžete import uložit a rovnou spustit nebo jen uložit po výběru příslušné funkce ukryté pod rozbalovací šipkou u tlačítka.

• Seznam připravených importérů se objeví v tabulce na záložce Feeds . Je stejně jako řada dalších administračních výpisů v Drupalu plně editovatelný modulem Views .

• Především však lze importy hromadně označit a provést s nimi hromadnou akci výběrem z volby With selection… nad seznamem.

• Budete-li chtít spustit konkrétní import, klepněte na šipku u tlačítka Edit a z rozbalených možností zvolte Import.

Poznámka: Modul Feeds je velice mocný nástroj pro automatizovaný import dat do Drupalu. Není to samozřejmě jediná možnost, pracovat můžete i s REST API či zcela vlastním modulem na míru, ale to je již záležitost čistě programátorská.

Tip: U Feedu se vám bude mnohdy hodit možnost nahrazení jednoho řetězce jiným předtím, než dojde k jeho spárování podle připraveného mapování. Umožní vám to modul Feeds Tamper ( drupal. org/project/feeds_tamper ). Pro import obrázků prostřednictvím feedů zase využijete modul Feeds Image Grabber ( drupal.org/project/feeds_imagegrabber ).

Obrázek 9.17 Administrační stránka s přehledem feedů a možností spouštění importů

…

Toto je pouze náhled elektronické knihy. Zakoupení její plné verze je možné v elektronickém obchodě společnosti eReading .