tag open drupal drupal-hooks drupal-permissions drupal-content-types

tag - open graph drupal 7



Gancho permanente para más de un tipo de contenido (2)

Drupal 6.x

Tengo este módulo que maneja cuatro tipos de contenido diferentes. Para el caso, ¿cómo puedo definir el permiso para cada contenido dentro del mismo módulo? ¿Es eso posible? No puedo encontrar la forma de definir el permiso para cada tipo de contenido. Cuz hook_perm debe nombrarse con el nombre del módulo y no tiene ningún argumento (como hook_access $ node) para devolver la base de permisos en el tipo de contenido. Así es como me gustaría hacer:

function mymodule_perm() { if(content1) return array( ''create content1 node'', ''edit content1 nodes'', ''delete content1 nodes'', ); if(content2) return array( ''create content2 node'', ''edit content2 nodes'', ''delete content2 nodes'', ); if(content3) return array( ''create content3 node'', ''edit content3 nodes'', ''delete content3 nodes'', ); ....... }

Cualquier ayuda sería muy apreciada.


Normalmente no necesita crear permisos para tipos de contenido usted mismo, ya que el módulo de nodo hace esto por usted en node_perm() . Para cada tipo de contenido que declare en hook_node_info() , el módulo de nodo creará automáticamente un conjunto fijo de permisos de la siguiente manera:

$perms[] = ''create ''. $name .'' content''; $perms[] = ''delete own ''. $name .'' content''; $perms[] = ''delete any ''. $name .'' content''; $perms[] = ''edit own ''. $name .'' content''; $perms[] = ''edit any ''. $name .'' content'';

Además de eso, puede declarar cualquier cantidad de permisos adicionales en la implementación de sus módulos hook_perm() (siempre que sean únicos) y usarlos en su código como lo desee.

Lo importante aquí es que un permiso no hace mucho por sí mismo: es solo un nombre que aparecerá en la página de permisos, lo que le permite atribuirse a los roles. Solo se vuelven ''significativos'' mediante un código que los utiliza a través de user_access() a user_access() .

Entonces, si, por ejemplo, usted quisiera crear un nuevo permiso especial para cada uno de sus tipos de contenido, simplemente los declararía en hook_perm() todos a la vez (para que no necesite ningún argumento, simplemente devuelva una cadena por permiso) te gustaría crear).


En términos generales, un módulo que implementa más de un tipo de contenido devolverá todos los permisos que define desde hook_perm() ; no hay forma de saber para qué tipo de contenido está pidiendo Drupal los permisos implementados.
Drupal siempre les pide a los módulos la lista de todos los permisos implementados, que ni siquiera podrían estar relacionados con los nodos; hay algunos módulos que implementan solo permisos para sus páginas de configuración, por ejemplo.