perm gancio per più di un tipo di contenuto
-
26-09-2019 - |
Domanda
Drupal 6.x
Ho questo modulo che gestisce quattro diversi tipi di contenuto. Del resto, come faccio a definire il permesso per ogni contenuto all'interno dello stesso modulo? È anche possibile? Io non riesco a capire come definire il permesso per ogni tipo di contenuto cuz hook_perm deve essere nominato con il nome del modulo e non ha alcun argomento (come $ node hook_access) per tornare base di autorizzazione per il tipo di contenuto. Ecco come mi piacerebbe fare -
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',
);
.......
}
Qualsiasi aiuto sarebbe molto apprezzato.
Soluzione
In genere non è necessario per creare le autorizzazioni per i tipi di contenuto da soli, in quanto il modulo nodo fa questo per voi in node_perm()
. Per ogni tipo di contenuto si dichiara in hook_node_info()
, il modulo nodo creerà automaticamente un fisso insieme di permessi come segue:
$perms[] = 'create '. $name .' content';
$perms[] = 'delete own '. $name .' content';
$perms[] = 'delete any '. $name .' content';
$perms[] = 'edit own '. $name .' content';
$perms[] = 'edit any '. $name .' content';
Oltre a questo, si può dichiarare un qualsiasi numero di autorizzazioni aggiuntive nell'implementazione dei moduli hook_perm()
(fintanto che sono unici) e usare quelli nel codice come si desidera.
La cosa importante qui è che un permesso non fa molto per sé - è solo un nome che verrà visualizzato nella pagina delle autorizzazioni, permettendo così di essere attribuito a ruoli. Diventano 'significativa' solo dal codice che le utilizza tramite user_access()
chiamate.
Quindi, se, per esempio, si voleva creare una speciale, nuova autorizzazione per ognuno dei vostri tipi di contenuto da soli, si sarebbe solo li dichiarare hook_perm()
tutti in una volta (in modo che non è necessario alcun argomento - solo tornare una corda per autorizzazione che si desidera creare).
Altri suggerimenti
In generale, un modulo di esecuzione più di un tipo di contenuto restituirà tutti i permessi esso definite da hook_perm()
; Non c'è un modo per sapere con che tipo di contenuto Drupal sta chiedendo i permessi implementate.
Drupal chiede sempre ai moduli l'elenco di tutte le autorizzazioni implementate, che non poteva anche essere correlati a nodi; ci sono alcuni moduli che implementano solo le autorizzazioni per le loro pagine di impostazione, per esempio.