Entity View Modes: postavte si vlastní režimy zobrazení v Drupalu 7

Jistě dobře víte, že v Drupalu se pracuje se základním zobrazením obsahu v podobě plné a zkrácené verze. V sedmičce lze upravit i výstup do RSS a výsledků hledání. S modulem Entity View Modes však postavíte vlastní režimy zobrazení a výrazně zrychlíte vývoj webu.

Jakmile se pustíte do definice typu obsahu v Drupalu 7, nemůžete vynechat ani Správu zobrazení. Zde pro jednotlivé režimy zobrazení určujete, která políčka (respektive jejich obsah) se v daném režimu zobrazí a v jaké podobě.

Základní možnosti, které vám tu Drupal 7 nabídne, jsou však pro potřeby větších webů omezené. V podstatě pracujete vždy s plným zobrazením a zkrácenou verzí (teaser). Hodí se to perfektně pro textový obsah typu články.

Jenže díky univerzálnosti Drupalu si můžete definovat libovolné další typy obsahu s políčky, která vůbec nejsou určena k zobrazování dlouhých a zkrácených verzí textů v nějakém výpisu. Kdysi jsem tu v jiném návodu zmínil vytvoření typu obsahu Pozemek pro nějaký realitní web. Tento typ obsahu má mimo jiné definována políčka Fotografie, Rozloha a Inženýrské sítě.

Představte si, že na webu chcete v různé formě vypisovat seznam těchto pozemků. Ať už pomocí Views nebo ručním voláním v kódu nějakého na míru psaného modulu. Jistě, ve Views zobrazíte zkrácenou či plnou verzi uzlu, v kódu modulu zase zavoláte funkci drupal_render(node_view($node,'teaser')), kde teaser případně vyměníte za full.

Teď si ale představte, že se vám na webu střídají požadavky na zobrazení plné verze obsahu, zkrácené a ještě několika dalších - typicky v boxících pro související obsah nebo pro nějaké TOP upozornění či slideshow. To máme minimálně tři další „zobrazovátka", která se liší od plné verze i teaseru, ale musíme je vykreslovat tak, že ve Views naklikáme jednotlivá políčka nebo si je v kódu vlastního modulu vyseparujeme z objektu $node.

Je to ale docela pracné, zvlášť v momentě, kdy si uvědomíte, že stejný seznam políček naklikáváte nebo píšete už po několikáté. Jak z toho ven?

Entity View Modes - neocenitelný pomocník pro větší weby

S problémem nastíněným výše vám pomůže modul Entity View Modes. Poté, co jej zapnete, přibude vám nová část v administraci - Nastavení > Systém > Entity view modes. Vyhledejte položku Uzly a klepněte na odkaz Add new view mode. Zadejte název nového zobrazovacího režimu a vyberte typy obsahu, pro které bude dostupný.

Entity View Modes a Drupal 7

Poté přejděte do sekce Struktura > Typy obsahu > xxx > Správa zobrazení. Rozklepněte si nově přidaný režim zobrazení a upravte si seznam a vzhled políček, která se v tomto režimu budou vykreslovat.

Entity View Modes a Drupal 7

A to je vše. Pokud budete nyní ve Views zobrazovat uzly, můžete si říci, zda je chcete kromě plného a zkráceného režimu zobrazení vykreslit také v tomto nově přidaném. Podobně při volání node_view() můžete jako druhý parametr zadat řetězec se strojovým označením nově přidaného režimu.

Entity View Modes není jen pro obsahové uzly

Jak jste si možná na výše uvedených screenshotech všimli, Entity View Modes nenabízí jen definice nových způsobů zobrazení pro obsahové uzly. Stejně tak lze definovat další režimy zobrazení i pro jiné entity v Drupalu. Typicky tedy pro komentáře, kategorie a uživatele (i zde přeci pracujete s políčky), ale také pro Soubory. U nich určujete, zda je nový režim zobrazení určen pro audio, obrázkové, video nebo další typy souborů.

Modul najdete na jeho projektové stránce Entity View Modes. Pokud byste hledali něco podobného pro Drupal 6, zkuste Build modes.

Tip: Hledáte-li nástroj, jak si naklikat layout v různých způsobech zobrazení v Drupalu, koukněte na článek Display suite: naklikejte si layout článků v Drupalu bez úprav CSS.

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

návštěvník

dole v článku zmiňujete Display suite, ale jestli se nemýlím, tak podobnou funkcionalitou disponuje i on?

Profile picture for user Jan Polzer

Je to podobné, ale Display Suite je primárně na něco jiného. Navíc, pokud jen potřebujete nové režimy zobrazení a nepotřebujete si naklikávat layout, je Display Suite jako kanón na vrabce.

návštěvník

jasně chápu, já používám kanón, takže nepotřebuji střílet na vrabce :).

Profile picture for user Jan Polzer

I tak je dobré zvážit, zda Display Suite použít. Má totiž větší režii než Entity View Modes a do kódu navíc generuje hromadu dalších DIVů.

návštěvník

Dobrý den, měla bych dotaz k použití nově vytvořeného režimu Zobrazení.

Vytvořila jsem se dle výše uvedeného následující:

A) Vlastní typ obsahu "Herec"
B) Add Entity view mode pro UZLY "Profil" a povolila pro typ "Herec"
C) Typ obsahu "Herec" > Správa Zobrazení jsem vybrala horní záložku "Profil" a naklikala jednotlivé pole dle své líbivosti.

Nyní se však dostávám k tomu, jak standardně použít toto zobrazení "Profil" na místo standardního "Výchozí", které se mi tam nabízí defaultně po uložení?

Děkuju

Profile picture for user Jan Polzer

No, to je otázka. Standardně Drupal používá Úvodník, je-li to nějaký výpis obsahu a Celý obsah, je-li uzel rozklepnut do detailu. Vlastní typy zobrazení použijete obvykle při výpisu pomocí Views nebo v momentě, kdy programujete nějaký modul a chcete v něm funkcí node_view() volat zobrazení nějakého uzlu v konkrétním typu zobrazení.

Jestli to dobře chápu, chcete upravit, jak bude vypadat vizitka herce po rozkliknutí jeho uzlu. V tom případě asi nepotřebujete nový view mode, jen to upravte v typu zobrazení Celý obsah.

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