Jak dodać nowe warunki do istniejących, które określają, czy element menu jest widoczny? Warunki te nie powinny ograniczać się do ustawień uprawnień.
Jako przykładowy przypadek użycia (niekoniecznie powód tego pytania): Załóżmy, że mam typ zawartości, w którym użytkownicy mogą tworzyć tylko jeden węzeł. Mam element menu służący do dodawania tego typu treści. Ale jeśli użytkownik utworzył już węzeł tego typu zawartości, chcę ukryć element menu. Moją pierwszą myślą jest uruchomienie zapytania w celu sprawdzenia istnienia węzła utworzonego przez bieżącego użytkownika, który ma określony typ zawartości. Jeśli taki istnieje, ukryj element menu.
Myślę, że ten rodzaj funkcjonalności powinien wejść hook_menu_alter()
i dodać tam wymaganą logikę. Ale nie jestem pewien, jak to zrobić, nie omijając istniejących kontroli, takich jak sprawdzenie, czy użytkownik ma uprawnienia do tworzenia tego typu treści. Czy musiałbym uwzględnić tę logikę w swoim własnym stanie? Czy mogę dodać do istniejącej logiki dostępu bez nadpisywania jej?
Edycja: niektóre osoby wydają się skoncentrowane na odpowiedzi „jak ograniczyć użytkownika do utworzenia jednego węzła typu zawartości”. To nie jest pytanie tutaj. Pytanie brzmi: jak dodać niestandardowe warunki dostępu do elementu menu.
W odpowiedzi na powyższe komentarze rozwiązaniem w D7 byłoby użycie:
źródło
Szukasz modułu interfejsu API dostępu do menu Łańcuch .
Istnieje co najmniej jeden przykład korzystania z Drupal Stack Exchange.
źródło
Jedną z opcji byłoby utworzenie nowej roli, która ma uprawnienia do tworzenia zawartości dla danego typu zawartości. Gdy użytkownik utworzy węzeł tego typu, usuń tę rolę, a nie będzie mógł już więcej tworzyć.
źródło
Być może powinieneś wypróbować moduł Limit węzłów .
Ze strony projektu:
źródło