Jak na vylepšené nastavení viditelnosti bloků v Drupalu

Standardně nastavíte zobrazení bloků pro uživatelské role, pro konkrétní typy obsahu či na základě konkrétních URL adres, systémových nebo s aliasem. Ale co složitější pravidlo? Jak nastavit zobrazení bloku, pokud uzel obsahuje konkrétní hodnotu v konkrétním políčku? Blok pro nedostupné produkty? Blok pro články v konkrétní kategorii? A co blok pro uživatele, kteří nejsou v konkrétní uživatelské roli?

Všechny výše uvedené kombinace je samozřejmě možné v Drupalu řešit a dobrou zprávou je, že k tomu ani nemusíte psát vlastní modul s pluginem řešící nastavení viditelnosti. Jakkoli to není v Drupalu 8/9 složité.

Abyste byli schopni pokročilé kombinace naklikat, je nutné do Drupalu doplnit modul nazvaný Block Visibility Groups. V článku budu ještě ukazovat možnost nastavení bloku na základě termínu spojeného s článkem, což řeší rozšíření Block Visibility Groups nazvané Term condition.

Protože nastavení tohoto modulu nemusí být úplně jasné na první pohled a ani se mi nevešel do knihy 333 tipů a triků pro Drupal 9, pojďme se na něj podívat krok za krokem.

Jak nastavit viditelnost bloků pro uživatele, kteří nejsou v konkrétní uživatelské roli

Řekněme, že máte uživatelskou roli na e-shopu pojmenovanou VIP. A blok budete chtít zobrazit všem uživatelům, kteří nejsou v této roli. Jistě, v základu v Drupalu naklikáte, kdo může blok vidět. Jenže se tu v daném požadavku bije skutečnost, že blok chcete zobrazit i přihlášenému uživateli bez role. Pokud byste blok zapnuli pro přihlášené, pak ho VIP uvidí automaticky, protože jsou zkrátka i v roli přihlášených. A to je scénář, kde nastupují Block Visibility Groups.

Block Visibility Groups v Drupalu

Jak zobrazit blok pro články v určité kategorii

V posledních týdnech jsem několikrát řešil potřebu zobrazení bloku u článků nebo stránek, pokud jsou spárovány s určitou kategorií. Konkrétně například bloky s rychlým kontaktem, který byl upraven podle toho, zda stránka pojednává o té či oné firemní činnosti.

V základu to Drupal nedovede, Block Visibility Groups k tomu potřebuje zmíněné rozšíření Term condition. Poté je postup už podobný, jako uvádím výše.

Tedy připravíte nové pravidlo, tentokrát vyberete nastavení podmínky na základě Termínu a pomocí automaticky dokončovacího políčka tento termín vyhledáte. Uzel, kterého se to týká, definujete jako Node from URL. Pravidlo pak jenom spárujete v nastavení konkrétního bloku.

Určitě na Block Visibility Groups koukněte. Je stabilní pro Drupal 8 i 9, jeho vydání pokrývá Security Team a kromě zmíněného rozšíření pro termíny k němu vznikly i rozšíření pro tokeny nebo slovníky.

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

Poslední komentáře
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