Drupal: jak na kontextově reagující vystavené filtry ve Views

Vystavené filtry ve Views slouží k vytvoření uživatelem definovaných filtrů zobrazení, tedy pro sestavení mechanismu prohledávání určité části webu. V návodu si ukážeme, jak vystavené filtry ukrývat či zobrazovat podle výběru hodnoty v jiném filtru.

Pro následující návod jsem zvolil - doufám, že názorný - následující příklad. Vezměme jednoduchý web realitní kanceláře, která prezentuje svou nabídku na internetu. Prodává pozemky a budovy. Každý z těchto dvou typů nemovitostí má svá specifika.

Uživatel může na webu této realitní kanceláře prohledávat nabídku pomocí stránky s nastavitelným filtrem. Vybere si zde typ nemovitosti (budovu či pozemek) a některá její specifika. Následně mu web zobrazí jen ty záznamy, které zadaným kritériím odpovídají.

Z výše uvedeného zadání  je myslím zřejmé, že budete potřebovat nejlépe dva typy obsahu, pomocí polí k nim přiřadit jednotlivé parametry jako jsou specifikace inženýrských sítí, výměry, počty pokojů, typ budovy atd. Následně tyto dva typy obsahu vyfiltrujete do Views a zobrazíte na samostatné stránce. Vznikne vám tak jednoduchý katalog.

Aby uživatel mohl z katalogu vybrat jen ty záznamy, které jej zajímají, přidáte do View vystavené filtry a uživatel si tak bude moci sám vybírat, zda si zobrazí pozemky či budovy a která další kritéria při hledání upřesní.

Máme tedy situaci, kdy ve vystavených filtrech máme dva různé typy obsahu a několik dalších filtrů pracujících s políčky, která se nacházejí buď u obou, nebo střídavě u jednoho či druhého typu obsahu.

Views bohužel ve výchozím stavu nedovede vystavené filtry dynamicky měnit tak, aby třeba při výběru pozemku zmizel vystavený filtr pro volbu typu budovy. Řešení ale existuje a jmenuje se Views Dependent Filters.

Více už vám ukáže následující videonávod:

K návodu jedna poznámka. Tam, kde mluvím o dependency filtru mám samozřejmě na mysli Views Dependent Filter.

Možné varianty

A pokud byste si práci s Views chtěli procvičit: Situaci popisovanou v návodu je možné řešit i s jediným typem obsahu. Vytvoříte si typ obsahu nemovitost, kterému přiřadíte políčko seznam se dvěma hodnotami - budova a pozemek. Poté přiřadíte všechna možná políčka, která budete chtít u nemovitosti, ať už jakéhokoli typu, vyplňovat.

V sestaveném Views pak nebudete další filtry ukrývat podle typu obsahu, ale právě podle políčka se seznamem typů nemovitosti. Pokud by vám vadilo, že při vkládání nemovitosti do webu bude zobrazeno množství nesouvisejících polí (např. proč u pozemku zobrazovat pole pro zadání typu budovy), použijte modul Conditional Fields. Také on dovede skrývat políčka dle různých závislostí, ovšem ne ve Views, ale právě ve formuláři pro vkládání uzlu.

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

Díky za tenhle návod. Měl bych pár dotazů. Parametry (třeba typ nemovitosti ) jsou asi udělany přes text field- select.   Máte zkušenosti jak by to pracovalo s Taxonomy terms nejlepe i s hierarchii?

díky Svaťa

návštěvník

Dá se někde porosím zapnout, aby se filtr zobrazil i u bloku? Když vytvořím blok, tak se mi stále nezobrazuje... Díky.

Profile picture for user Jan Polzer

Myslím, že ne. Vystavené filtry jsou vidět pouze u stránky. Ale můžete nechat vystavené filtry zobrazit jako samostatný blok.

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