Как я могу добавить новые условия поверх существующих условий, которые определяют, виден ли пункт меню? Эти условия не должны ограничиваться настройками разрешений.
В качестве примера использования (не обязательно причина этого вопроса): Предположим, у меня есть тип контента, пользователям которого разрешено создавать только один узел. У меня есть пункт меню для добавления этого типа контента. Но если пользователь уже создал узел этого типа контента, я хочу скрыть пункт меню. Моя первая мысль - запустить запрос, чтобы проверить существование узла, созданного текущим пользователем, который имеет определенный тип контента. Если он существует, скрыть пункт меню.
Я думаю, что этот тип функциональности следует hook_menu_alter()
добавить и добавить необходимую логику. Но я не уверен, как это сделать, не обходя существующие проверки, например, проверяя, есть ли у пользователя права на создание контента такого типа. Должен ли я включить эту логику в свое собственное состояние? Или я могу добавить к существующей логике доступа, не перезаписывая ее?
Изменить: Некоторые люди, кажется, сосредоточены на том, чтобы ответить «как я могу ограничить пользователя созданием одного узла типа контента». Это не вопрос здесь. Вопрос в том, как добавить пользовательские условия доступа к пункту меню.
В ответ на комментарии выше, решение в D7 будет использовать:
источник
Вы ищете модуль API доступа к Chain Menu .
На Drupal Stack Exchange есть как минимум один пример того, как его использовать.
источник
Одним из вариантов будет создание новой роли, которая имеет разрешение на создание контента для вашего типа контента. После того, как пользователь создаст узел этого типа, уберите эту роль, и он больше не сможет его создать.
источник
Возможно, вам стоит попробовать модуль Node Limit .
Со страницы проекта:
источник