Erweiterung Content Access mit ACL

am 06.08.2008 - 20:36 Uhr in
Hallo Zusammen,
nutzte die Module Content Access mit ACL. Es gibt statische Seiten die mit Hilfe dieser Module nur von einzelen Benutzer gepflegt werden können. Damit es ersichtlich ist wer für diese Seiten zuständig ist, würde ich gern dynamisch die Verantwortlichen in einen Block anzeigen lassen.
Gibt es da eine Möglichkeit?
- Anmelden oder Registrieren um Kommentare zu schreiben
acl & author
am 06.08.2008 - 22:26 Uhr
Gibt es da eine Möglichkeit?
Bestimmt.
Du müsstest einen neuen Block hinzufügen [admin/build/block] und dort php-Code einfügen. In etwa:
<?php
$sql = "SELECT DISTINCT(au.uid) FROM {node} n LEFT JOIN ({acl_node} an ON n.nid = an.nid INNER JOIN {acl_user} au ON an.acl_id = au.acl_id) WHERE n.nid = %d";
$results = db_query($sql, $nid); // $nid ist die Id der node
$items = array();
while ( $data = db_fetch_object($results) ) {
$items[] = theme_username(user_load(array('uid' => $data->uid)));
}
if ( count($items) ) {
print theme('item_list', $items);
}
?>
Das könnte funktionieren.
Du könntest auch einen leeren Block erstellen und dann über ein Block-Template den Inhalt einfügen. Ist sicherer als die oben genannte Variante, da dort bei Fehlern die gesamte Seite unter Umständen crashed :-}
hth,
Stefan
Syntaxfehler
am 07.08.2008 - 07:38 Uhr
Danke für die schnelle Anwort, hab von PHP wenig Ahnung. Bekomm einen Syntaxfehler für
'ON n.nid = an.nid INNER JOIN acl_user au ON an.acl_id = au.acl_id) WHERE n.nid =' at line 1 query: SELECT DISTINCT(au.uid) FROM node n LEFT JOIN (acl_node an ON n.nid = an.nid INNER JOIN acl_user au ON an.acl_id = au.acl_id) WHERE n.nid
Hab eine MySQL-Datenbank mit PHP5.
Für weitere Hilfe wäre ich dankbar.
SQL
am 07.08.2008 - 09:41 Uhr
Moin!
Die Klammern im SQL-Statement sind falsch.
Hier mal eine funktionierende Version für den Block:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
$sql = "SELECT DISTINCT(au.uid) FROM node n INNER JOIN acl_node an ON n.nid = an.nid INNER JOIN acl_user au ON an.acl_id = au.acl_id WHERE n.nid = %d";
$results = db_query($sql, arg(1));
$items = array();
while ( $data = db_fetch_object($results) ) {
$items[] = theme_username(user_load(array('uid' => $data->uid)));
}
if (count($items) ) {
print theme('item_list', $items);
}
}
?>
Jawohl, danke funkioniert
am 07.08.2008 - 19:22 Uhr
Jawohl, danke funktioniert einwandfrei.
Woher bekommt man die Infos wie man die Drupal Funktionen richtig verwendet, hab da bis jetzt noch keinen guten Einstieg gefunden.
Einstieg
am 07.08.2008 - 20:16 Uhr
Woher bekommt man die Infos wie man die Drupal Funktionen richtig verwendet, hab da bis jetzt noch keinen guten Einstieg gefunden.
Hm, ist schwierig.
Die Handbücher sind ganz guter Lesestoff, die API Referenz ist auch ganz gut zum Nachschlagen von Funktionen.
Bestehende Module kann man sich auch mal anschauen, um zu sehen, wie die bestimmte Problemstellungen lösen.
Ist halt alles eine Frage der Zeit (ich bin schon ein paar Jahre dabei, da weiss man Vieles einfach irgendwann ;-)).
Stefan