Estoy usando Drupal 7 y creé un nuevo tipo de contenido llamado "eBook", y creé una nueva función llamada "MonthlySubscriber". Mi intención es permitir que solo los usuarios con el "Suscriptor mensual" vean los nodos "eBook". Cuando miré la configuración de permisos para un rol, vi las casillas de verificación que permiten crear, editar y eliminar nodos de ese tipo de contenido, pero no hay casillas de verificación para ver los nodos.
¿Cómo limito los usuarios que pueden ver los nodos "eBook" solo a los usuarios con el rol "MonthlySubscriber"?
Aquí hay una manera simple de proteger las páginas de nodo (nodo / NID) de usuarios sin privilegios.
fuente
hook_node_access
no funcionará con nada que "enumere" nodos, como una Vista. Por lo tanto, puede restringir el acceso a la vistahook_node_access
, pero una vista o una consulta de nodo personalizada aún puede mostrar ese nodo al usuario.hook_node_access
es más útil para el control editorial, para controlar las operaciones de creación / actualización / eliminaciónEl acceso al contenido no funcionó para mi instalación de Drupal 7, por lo que en su lugar utilicé los permisos de vista de nodo .
fuente
Para drupal 7, pruebe este: Acceso por plazo
fuente
La solución hook_menu_alter publicada anteriormente por ya.teck funciona, pero entra en conflicto con el estándar hook_node_access en su nombre de función. el hook_menu_alter no es necesario en este caso, por lo que la respuesta publicada por Denis arriba es, en mi opinión, más precisa y la forma correcta. La alteración de menu_item como se hace es el primer ejemplo referenciado que podría ser golpeado por otro módulo más adelante.
fuente
Utilicé un fragmento de código que se encuentra en la documentación de la API D7 para el enlace hook_node_access .
Este código otorgará acceso para ver el contenido del "libro electrónico" a los usuarios que tengan el permiso "ver libro electrónico".
Necesita un nuevo permiso para controlar el acceso mediante la implementación de hook_permission ().
Al implementar hook_node_access (), Drupal puede otorgar o denegar el acceso al nodo.
Otros permisos (editar, eliminar, etc.) pueden tratarse a través de los permisos normales de Drupal.
Opcionalmente, puede eliminar el contenido de la descripción general del administrador implementando hook_query_TAG_NAME_alter.
fuente
Prefiero usar el módulo de permisos de vista de nodo . Es más simple que el módulo de acceso al contenido.
Al igual que en D6, agrega los permisos "Ver cualquier contenido" y "Ver contenido propio" a cualquier tipo de contenido que elija.
Pasos a seguir:
/admin/config/content/node-view-permissions
y seleccione a qué tipos de contenido desea limitar el acceso.Luego, vaya
/admin/people/permissions#module-node_view_permissions
y seleccione los roles en los que desea poder ver el contenido. Guardar permisos.¡Hecho!
fuente