it-swarm-eu.dev

Jak skrýt hlavní položky nabídky?

Mám uživatele, kteří jsou vlastníky některých uzlů, a každý uzel má v hlavní nabídce odkaz na nabídku. Uživatelé mohou vidět pouze uzly, které vlastní, a nevidí uzly jiných uživatelů.

Problém je nyní v tom, že se nabídka zobrazí všem uživatelům; zobrazuje odkazy jak pro uzly vlastněné aktuálním uživatelem, tak pro uzly, které aktuální uživatel nevlastní.

screenshot

Chtěl bych zobrazit pouze položky nabídky odpovídající uzlům vlastněným přihlášeným uživatelem. Jak to mohu udělat?

4
Ek Kosmos

Drupal skryje položky nabídky pro cesty, ke kterým uživatelé nemají přístup. Aby to však fungovalo, vyžaduje, aby zpětné volání přístupu pro tuto položku nabídky vrátilo FALSE. Pokud místo toho ovládáte řízení přístupu v zpětném volání nabídky, Drupal nebude vědět, že uživatel nemá přístup a zobrazí nabídku.

Řešením by bylo implementovat vlastní modul/funkci řízení přístupu, pokud nemůžete použít žádný z existujících uzlů.

4
googletorp

Pro každou položku nabídky, kterou chcete řídit přístup k, předpokládám, že máte hook_men (http://api.drupal.org/api/drupal/modules--system--system.api.php/ funkce/hook_menu/7) nastavení hodnoty pole? Vlastnost, o kterou se zajímáte pro každou z těchto položek pole, je „zpětné volání přístupu“ - funkce, která vrací PRAVDA, pokud má uživatel přístupová práva k této položce nabídky, a NEPRAVDA.

Použijte ser_access ($ string, $ account = NULL) (http://api.drupal.org/api/drupal/modules--user--user.module/function/user_access) s cílem hodnota oprávnění přístupu podle vašeho výběru na základě tohoto odkazu: ( http://drupal.org/node/132202 )

2
DeeZone

Následující odpovědi (které modulům umožňují tuto funkci) najdete v ...

Jak mohu zobrazit/skrýt pouze jednu položku nabídky na základě role uživatele?

...užitečný:

Modul Drupal menu_per_role:

https://drupal.stackexchange.com/a/29545

Viditelnost položky Drupal.

https://drupal.stackexchange.com/a/30934

0
therobyouknow