Da macht es einem Drupal einfach: die erste Datenbankabfrage

Wir schreiben uns jetzt eine Funktion, die die node-Tabelle abfragt und ein paar basic Daten ausgibt. Das sieht im ersten Ansatz ganz einfach so aus:

$query = db_query("SELECT nid, title, type, status FROM node");
$records = $query->fetchAll();

Mit db_query kann man einen ganz straighten statischen Select absetzen, mehr dazu hier in der Drupal-Dokumentation. Der fetchall() ist auch ganz geradlinig, ich zitiere:

// Retrieve all records into an indexed array of stdClass objects.
$result->fetchAll();

Über das $records-Array kann man jetzt ganz normal mit einem Foreach iterieren:

foreach ($records as $record) {

  echo $record->nid;
  echo $record->type;
  echo $record->status;
  echo $record->title."<br>";
  
}


Das gibt eine (unformatierte) Liste der selektierten Felder aus:

simpelselect
simpelselect

Ist noch nicht besonders schön, hat aber Potential. Was lernen wir daraus, die Erste:

  • der Status ist hier immer 1, das steht für published, 0 wäre unpublished
  • wir haben die Typen page, article und blog

Für das Inhaltsverzeichnis wollen wir natürlich nur den Typ blog und den Status 1, das kommt in die Where-Klausel. Jetzt wollen wir aber auch einen Link zum Rezept, und dazu brauchen wir im Zweifelsfall den Alias-Pfad. Den holen wir uns mit der eingebauten Drupal-Funktion drupal_get_path_alias(). Die möchte mit node/[nid] gefüttert werden, wobei nid natürlich die ID des entsprechenden Nodes ist. Ich packs mal in unsere Foreach mit rein:

foreach ($records as $record) {
  
  echo $record->nid;
  
  $akt_id = $record->nid;
  
  echo $record->type;
  echo $record->status;
  echo $record->title."<br>";
  
  $alias = drupal_get_path_alias('node/'.$akt_id);

  echo $alias."<br>";
  
} 

Damit kriegen wir bei den Nodes, für die ein textueller Pfad vergeben wurde, diesen auch angezeigt:

node_pfad
node_pfad

Daraus können wir uns später die Links auf die Rezepte konstruieren. Jetzt muss ich mir erstmal überlegen, wie ich die Logik für das schön strukturierte Inhaltsverzeichnis nach Drupal portiert kriege, aber ich hab da schon einen Plan. Mehr dazu im nächsten Beitrag.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert