Entity v Drupalu: k čemu jsou dobré a jak je využít

Jednou ze zásadních novinek v Drupalu 7 jsou entity. Jedná se o jakési objekty, které je možné rozšiřovat pomocí políček a různě zobrazovat. Nahrazují dosavadní uzly, respektive uzly nyní vycházejí právě z entit a jsou jedním z jejich typů. Podívejme se na ně ryze praktickým pohledem a zkusme si vytvořit jednoduché rozhraní pro práci s entitami.

Koukneme-li velice hrubě na historii Drupalu, byly zde uzly, coby základní objekt v Drupalu, okolo kterého se točilo všechno, co souviselo s obsahem webu. Díky modulu CCK bylo možné uzly rozšiřovat o další políčka, takže jste při vkládání uzlů nebyli omezeni jen na nadpis a tělo uzlu. Brzy se ukázalo, jak mocný je to nástroj a vznikla celá řada modulů umožňujících připojovat políčka i k uživatelům a dalším položkám v Drupalu. Lépe řečeno nástrojů, které je převáděly na uzly.

Drupal 7 přišel se zásadně vylepšeným konceptem, který nazval entitami. V Drupalu můžete mít celou řadu entit, ke kterým lze přidávat různá políčka nabízená modulem Field a jeho rozšířeními. Příkladem budiž uzly, komentáře, uživatelé a kategorie, které najdeme v základní instalaci Drupalu. To všechno jsou právě různé typy entit.

Myslím, že je škoda, že tento koncept není častěji zmiňován. Zřejmě je to dáno tím, že entity nejsou v Drupalu vidět na první pohled. Jedná se spíše o programátorskou záležitost. Přitom vám však entity mohou výrazně pomoci tam, kde práce s uzly nestačí nebo je naopak zbytečná.

Řekněme, že stavíte nějaký katalog položek, nebo sbíráte nějaké poznámky od uživatelů. Jejich realizace pomocí uzlů je samozřejmě možná, ale zbytečně robustní - u katalogu zřejmě nebudete potřebovat systém revizí, propojení na komentáře, provázanost s autorem, správu data a další položky obvyklé u uzlů. Docela dobře si vystačíte jen se sadou políček. A právě to je jedna z příležitostí pro entity.

Myslím, že kdybych napsal cokoli dalšího, nezvládl bych to lépe, než Ronald Ashri v seriálu začínajícím článkem Drupal Entities - Part 1 - Moving beyond nodes. Pokud vám výše uvedený základ nestačí a chcete entitám porozumět hlouběji co se jejich fungování v Drupalu týče, vřele doporučuji k přečtení. V seriálu se dozvíte také to, jak si vytvořit nové entity vlastním modulem a jak spravovat jejich vkládání a editaci v Drupalu.

Jak na entity v grafickém prostředí administrace Drupalu

Problémem entit v současné době je skutečnost, že v základní instalaci Drupalu neexistuje žádný nástroj na jejich vytváření, správu, vkládání údajů a jejich zobrazování. Jde v podstatě pouze o část API Drupalu, kterou můžete využívat k ukládání dat ve svých modulech. Jak píše Ronald Ashri, například Drupal Commerce využívá entity k ukládání položek na faktuře.

Postupně se ale objevují různé moduly umožňující vám nadefinovat si vlastní entity přímo v administračním prostředí Drupalu. Stále se jedná spíše o nástroj určený pro vývojáře webu, ale i tak užitečný. Entity totiž nemusíte pracně definovat pomocí kódu v nějakém svém modulu, ale jednoduše si je naklikáte v administraci. Níže zmíněné moduly vyžadují pomocný modul Entity API, který rozšiřuje základní funkcionalitu entit v Drupalu 7.

Jedním z takových modulů je Model Entities. Po jeho aktivaci vám v administraci Drupalu 7 přibude položka Struktura > Model Types, ve které odkazem Add model type přidáte nový typ entity (například automobil) a následně už klasicky pomocí Správy polí přidáte políčka, která se budou u tohoto typu entity vyplňovat (řekněme že u automobilů pro nějaký katalog třeba typ vozu, zrychlení, maximální rychlost, výrobce, model atd.). Problémem ale pak zůstává, že si už musíte sami vytvořit nějaký formulář pro práci s takto nadefinovanými entitami.

Drupal 7 a entity

Přehled entit v modulu Model Entities

Podobným modulem je Entity Construction Kit (ECK). Po instalaci jej najdete v nabídce Struktura > Entity Type. Odkazem Add Entity Type přidáte nový typ entity (opět třeba zmíněný automobil). V položce Properties vypněte ty vlastnosti entity, které nepotřebujete sledovat - čili pokud vás nezajímá, kdo a kdy vloží nový automobil do seznamu, vypněte autora, změněno a vytvořeno.

Drupal 7 a entity

Vytváření typu entity v ECK

Nový typ entity máte v tuto chvíli vytvořen a musíte mu nadefinovat nějaká políčka, tedy to, co je potřeba při vkládání vyplňovat. Nově přidaný typ entity si tedy v seznamu rozklepněte a na další stránce se přepněte na kartu Správa polí, kde přidáte potřebná políčka. Podobně pak můžete využít kartu Správa zobrazení.

Drupal 7 a entity

Správa polí u nového typu entity

Po definici políček se vraťte zpátky na kartu Přehled, kde klepněte na odkaz Add Entity - tím se dostanete do formuláře, pomocí kterého můžete přidávat nové automobily do seznamu. Všimněte si, že položky formuláře odpovídají políčkům, která jste si nadefinovali pro tento typ entity.

Drupal 7 a entity

Vkládání záznamů do entit

Jak na zobrazení entit?

Když vytvoříte nový záznam pro automobil a vrátíte se zpátky na přehled entit, bude tento záznam evidován pod číslem 1. Po jeho rozkliknutí se dostanete na stránku vypadající nějak takto:

Drupal 7 a entity

Zobrazení entity

Vzhled stránky a položek je přímo ovlivněn nastavením polí ve Správě zobrazení u daného typu entity. Můžete jej samozřejmě dále ovlivňovat pomocí šablony v tématu vzhledu. Jak si můžete všimnout, nejsou tu žádné karty k editaci, sledování návštěv a podobně, jako je tomu u uzlů.

Entity s největší pravděpodobností nebudete zobrazovat na samostatné stránce, ale využijete je coby záznam v nějakém jiném zobrazení. Náš jednoduchý příklad na automobilech můžeme využít třeba ve spojení s Views. Zavolejte funkci Struktura > Views > Add new view, kde v políčku Ukázat vyberte místo standardně nabídnutého Obsahu (což jsou uzly) nově vytvořený typ entity, v našem případě tedy Automobil.

Drupal 7 a entity

Vytvoření View na základě entity

Dále již můžete pokračovat klasickou cestou definice Views, tedy výběrem políček, filtrováním a nastavením způsobu zobrazení.

Jak na vkládání entit?

V tuto chvíli byste tedy měli mít vytvořený typ entit a několik samotných záznamů, převedeno do příkladu entitu typu automobil a v ní několik záznamů. Zobrazovat je můžete například ve formě tabulky definované pomocí Views. Jak jste viděli, záznamy entit můžete díky modulu ECK vytvářet přímo z administrace Drupalu a není potřeba žádného dalšího programování a tvorby speciálních formulářů.

V nastavení práv uživatelů, tedy v sekci Uživatelé > Oprávnění vyhledejte položku Entity Construction Kit a umožněte zde vkládání nových entit (v příkladu záznamů do katalogu automobilů) zapnutím oprávnění Add automobil automobil Entities vybrané skupině uživatelů. Odkaz na formulář pro vytvoření záznamu můžete vysledovat z administrační nabídky tam, kde jste sami vkládali nové vozy do katalogu.

Drupal 7 a entity

Formulář pro vložení záznamu do entity uživatelem

Všimněte si, že v oprávněních není nikde možnost nastavit editaci jen vlastních entit, jako je tomu třeba u uzlů. To ukazuje, že entity mohou být použity třeba v případě, kdy chcete maximálně redukovat režii systému spojenou s ukládáním nějakých záznamů do databáze.

Tímto článkem jsem se tedy pokusil vám ukázat, k čemu je možné využít entity, jak s nimi v Drupalu 7 pracovat po administrátorské části, a jak je následně zobrazovat. Pokud vás zajímá pohled z programátorské stránky, doporučuji výše uvedený seriál.

Pokud si chcete pohrát s formuláři na vkládání záznamů do entit, koukněte ještě na modul Entity UI. Pro programátory nabízí vcelku srozumitelný nástroj pro vytvoření formulářů pro vkládání entit na jiných adresách, než je poněkud komplikovaně vypadající ta z modulu ECK.

Tagy

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru