Frage

Drupal 6.x

ich dieses Modul haben, das vier verschiedene Inhaltstypen verwaltet. Was das betrifft, wie definiere ich die Erlaubnis für jeden Inhalt innerhalb des gleichen Moduls? Ist das überhaupt möglich? Ich kann nicht herausfinden, wie die Erlaubnis für jeden Inhaltstyp definieren Cuz hook_perm mit Modulnamen benannt werden muss, und es hat kein Argument (wie hook_access $ node) Erlaubnis Basis auf Inhaltstyp zurückzukehren. Hier ist, wie ich tun möchte -

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',
);
.......
}

Jede mögliche Hilfe würde sehr geschätzt werden.

War es hilfreich?

Lösung

Normalerweise brauchen Sie nicht, sich die Berechtigungen für Inhaltstypen zu erstellen, wie der Knotenmodul tut dies für Sie in node_perm() . Für jeden Inhaltstyp Sie href="http://api.drupal.org/api/function/hook_node_info/6" rel="noreferrer"> hook_node_info() in

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

Außerdem können Sie eine beliebige Anzahl von zusätzlichen Berechtigungen in Ihrer Module hook_perm() Implementierung erklären (solange sie eindeutig sind) und die in Ihrem Code verwenden, wie Sie wollen.

Das Wichtigste dabei ist, dass eine Genehmigung nicht viel von mir selbst macht - es ist nur ein Name, der auf der Seite Berechtigungen angezeigt wird, so dass es auf Rollen zugeschrieben werden. Sie werden nur durch Code ‚sinnvoll‘ geworden, dass nutzt sie über user_access() Anrufe.

Also, wenn Sie zum Beispiel eine spezielle, neue Berechtigung für jede Ihrer Content-Typen erstellen wollte sich selbst, würden Sie sie einfach auf einmal in hook_perm() erklären (so Sie kein Argument brauchen - Rückkehr nur eine Saite pro Erlaubnis würden Sie erstellen möchten).

Andere Tipps

Generell ist ein Modul mehr als ein Content-Typ Implementierung werden alle die Berechtigungen zurückgeben von hook_perm() definiert; es gibt keine Möglichkeit, für die Content-Typen zu kennen Drupal die implementierten Berechtigungen zu fragen.
Drupal fragt immer zu den Modulen die Liste aller durchgeführten Berechtigungen, die nicht einmal zu Knoten zusammenhängen könnte; gibt es einige Module, die nur die Berechtigungen für ihre Einstellung Seiten implementieren, zum Beispiel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top