¿Cómo puedo agregar nuevas condiciones además de las existentes que determinan si un elemento del menú está visible? Estas condiciones no deben limitarse a la configuración de permisos.
Como ejemplo de caso de uso (no necesariamente el motivo de esta pregunta): supongamos que tengo un tipo de contenido cuyos usuarios solo pueden crear un nodo. Tengo un elemento de menú para agregar ese tipo de contenido. Pero si el usuario ya ha creado un nodo de ese tipo de contenido, quiero ocultar el elemento del menú. Mi primer pensamiento es ejecutar una consulta para verificar la existencia de un nodo creado por el usuario actual que sea del tipo de contenido específico. Si existe, oculte el elemento del menú.
Creo que este tipo de funcionalidad debería entrar hook_menu_alter()
y agregar la lógica requerida allí. Pero no estoy seguro de cómo hacerlo sin pasar por alto las verificaciones existentes, como verificar si el usuario tiene permisos para crear ese tipo de contenido. ¿Tendría que incluir esa lógica dentro de mi propia condición? ¿O puedo agregar a la lógica de acceso existente sin sobrescribirla?
Editar: Algunas personas parecen centradas en responder "¿cómo limito a un usuario a crear un nodo de un tipo de contenido". Esa no es la pregunta aquí. La pregunta es cómo agregar condiciones de acceso personalizadas a un elemento del menú.
En respuesta a los comentarios anteriores, la solución en D7 sería usar:
fuente
Estás buscando el módulo API de acceso al menú en cadena .
Hay al menos un ejemplo en Drupal Stack Exchange sobre cómo usarlo.
fuente
Una opción sería crear un nuevo rol que tenga permiso para crear contenido para su tipo de contenido. Después de que un usuario cree un nodo de ese tipo, elimine ese rol y ya no podrá crear más.
fuente
Quizás deberías probar el módulo Node Limit .
Desde la página del proyecto:
fuente