Ich kenne nur den Titel eines Knotens und möchte den Knoten mit laden node_load()
.
Wie mache ich das?
Ich kenne nur den Titel eines Knotens und möchte den Knoten mit laden node_load()
.
Wie mache ich das?
Antworten:
In Drupal 6 können Sie den folgenden Code verwenden.
$node = node_load(array('title' => 'node title'));
Wenn Sie auch den Knotentyp kennen, können Sie den folgenden Code verwenden.
$node = node_load(array('title' => 'node title', 'type' => 'page'));
node_load () gibt immer einen einzelnen Knoten zurück. Dies liegt daran, dass die Funktion die von db_query () zurückgegebene Datenbank-Abfrageergebnisressource nicht durchläuft .
if ($revision) {
array_unshift($arguments, $revision);
$node = db_fetch_object(db_query('SELECT ' . $fields . ' FROM {node} n INNER JOIN {users} u ON u.uid = n.uid INNER JOIN {node_revisions} r ON r.nid = n.nid AND r.vid = %d WHERE ' . $cond, $arguments));
}
else {
$node = db_fetch_object(db_query('SELECT ' . $fields . ' FROM {node} n INNER JOIN {users} u ON u.uid = n.uid INNER JOIN {node_revisions} r ON r.vid = n.vid WHERE ' . $cond, $arguments));
}
node_load()
. Frage-Tag bearbeitet, um dies widerzuspiegeln.
$conditions
Parameter):$nodes = node_load_multiple(array(), array('title' => 'node title'));
In Drupal 7 wurden die Parameter für node_load()
geändert. Um die Knoten zu ermitteln, die bestimmten Bedingungen entsprechen, sollten Sie die EntityFieldQuery- Klasse verwenden.
$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
->propertyCondition('type', 'your_node_type')
->propertyCondition('title', 'your node title')
->propertyCondition('status', 1)
->range(0,1)
->execute();
if (!empty($entities['node'])) {
$node = node_load(array_shift(array_keys($entities['node'])));
}
Hier ist ein einfacherer Weg (wie bereits von Clive und bei SO vorgeschlagen ):
$nodes = node_load_multiple(NULL, array("title" => "Foo Bar"));
$node = current($nodes);
und viel einfacher zu merken als die Verwendung der EntityFieldQuery- Klasse.
Siehe auch: Programmgesteuertes Abrufen von Knoten nach Titel in Drupal 7 bei SO
@todo Remove $conditions in Drupal 8.
Auch in Drupal 8
$nids = \Drupal::entityQuery('node')
->condition('title', 'YourNodeTitle')
->sort('nid', 'DESC')
->execute();
und als nächstes:
$node = \Drupal\node\Entity\Node::load(HEREYOUNODEID);
Vergiss nicht, dass du brauchst
use Drupal\node\Entity\Node;
arg(1)
für alle Seiten Node / X sein. undnode_load()
arbeitet nur an NID