proxiss e-books

proxiss E-Books

Drupal Node- und Userobjekt in Blockcode nutzen


Kategorien:

Block Content in Drupal ist üblicherweise nicht Node bezogen. D.h., der Inhalt eines Blocks ist unabhängig vom gerade dargestellten Node. Um bestimmte Blocks zu bestimmten Nodes anzuzeigen kann man die standardmäßig vorhanden Sichtbarkeitsregeln aller Blocks nutzen.

Diese Sichtbarkeitsregeln erlauben eine Steuerung der Anzeige nach Benutzerrolle und Anzeigepfad, also bspw. "zeige diesen Block allen Besuchern mit Rolle Redakteur auf allen Seiten die mit 'artikel/' beginnen".

Die bloße Sichtbarkeit zu konfigurieren reicht aber häufig nicht aus. Manchmal möchte man den Inhalt des Blocks in Abhängigkeit vom aktuell dargestellten Node ändern. Z.B. Informationen zum Autor des Nodes einblenden. Dazu ist Programmierung in PHP nötig.

Die proxiss GmbH bietet Konfiguration, Theming, Customizing und Modul-Entwicklung für Drupal an. Rufen Sie uns an: 08061/34984-47 oder nutzen Sie unser Kontaktformular.

Der Schlüssel zur Erreichung dieses Ziels ist die Drupal API Funktion arg(). Diese Funktion gibt die Bestandteile des aktuellen Pfads vor URL aliasing zurück. Für Nodes, also bspw. "node/5/view", erhält man so

arg(0) -> "node"
arg(1) -> "5"
arg(2) -> "view"

Die "nid" 5 kann man nun verwenden um zusätzliche Informationen zu laden:

if (arg(0) == 'node'
   && is_numeric(arg(1))
   && (arg(2) == '' || arg(2) == 'view')) {
  $node = node_load(arg(1));
  if (is_numeric($node->uid))
    $user = user_load(array('uid' => "$node->uid"));
  ... hier etwas mit $node und $user programmieren ...
}

Der Code wird mit php tags geklammert in das Block-Body Feld eingegeben, der Filter ("input format") muss auf "PHP-Code" stehen.

Damit stehen dem Content Designer nun sämtliche Daten des aktuellen Nodes und dessen Autors zur Verfügung.