Jeśli jest to normalna strona, powinieneś mieć w arg(1)niej identyfikator NID , będzie to węzeł / X dla wszystkich stron. i node_load()działa tylko na NID
GoodSp33d
mój adres URL to projekty / {nazwa użytkownika} / {tytuł węzła}, dlatego używam arg (2)
helxsz
w drupal 7 nie można użyć node_load (), aby uzyskać węzeł według jego tytułu, po prostu przez nid
node_load () zawsze zwraca pojedynczy węzeł. Wynika to z faktu, że funkcja nie zapętla się nad zasobem wyniku zapytania bazy danych zwróconym z db_query () .
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));}
@sokratis Pamiętaj, że tytuły nie muszą być unikalne i można je zmienić w dowolnym momencie. Jeśli możesz przejść do odwoływania według identyfikatora węzła, byłoby to bezpieczniejsze.
David L
4
Drupal nie jest fanem CamelCase.
Sivaji
1
Ten przykład również po prostu nie działa w D7. node_load(). Zredagowałem tag zapytania, aby to odzwierciedlić.
Chapabu
3
Wersja D7 (choć z użyciem przestarzałego $conditionsparametru):$nodes = node_load_multiple(array(), array('title' => 'node title'));
Clive
47
W Drupal 7 parametry dla node_load()zostały zmienione. Aby uzyskać węzły spełniające określone warunki, należy użyć klasy EntityFieldQuery .
arg(1)
niej identyfikator NID , będzie to węzeł / X dla wszystkich stron. inode_load()
działa tylko na NIDOdpowiedzi:
W Drupal 6 możesz użyć następującego kodu.
Jeśli znasz również typ węzła, możesz użyć następującego kodu.
node_load () zawsze zwraca pojedynczy węzeł. Wynika to z faktu, że funkcja nie zapętla się nad zasobem wyniku zapytania bazy danych zwróconym z db_query () .
źródło
node_load()
. Zredagowałem tag zapytania, aby to odzwierciedlić.$conditions
parametru):$nodes = node_load_multiple(array(), array('title' => 'node title'));
W Drupal 7 parametry dla
node_load()
zostały zmienione. Aby uzyskać węzły spełniające określone warunki, należy użyć klasy EntityFieldQuery .źródło
Drupal 7
Oto prostszy sposób (jak już zasugerował Clive i w SO ):
i znacznie łatwiejsze do zapamiętania niż przy użyciu klasy EntityFieldQuery .
Zobacz także: Programowe pobieranie węzłów według tytułu w Drupal 7 w wersji SO
źródło
@todo Remove $conditions in Drupal 8.
W Drupal 7 możesz użyć kodu podobnego do następującego.
źródło
W Drupal 8 uruchom to:
$node
będzie w pełni utworzonym obiektem węzła.źródło
Również w Drupal 8
i dalej:
Nie zapomnij, że potrzebujesz
źródło