загрузите последние узлы с помощью node load()


Как я могу загрузить последние узлы с помощью node_load()?

Я использовал следующий код, но я не могу редактировать ссылки, потому что он создает список, в котором они находятся внутри него. Я хочу загрузить идентификаторы узлов, а затем использовать node_load() для загрузки каждого узла.

$output = db_query_range(db_rewrite_sql("SELECT n.nid, n.title, n.created FROM {node} n WHERE n.type = '%s' AND n.status = 1 ORDER BY n.created DESC"), story, 0, 10));
print $output;

Как это возможно?

Author: kiamlaluno, 2012-08-04

1 answers

Используя только node_load(), вы не можете получить список самых последних узлов, так как node_load() возвращает один объект узла для узла, который соответствует некоторым критериям; это не функция, которая возвращает список узлов.

Более быстрый, но немного неэффективный способ получить список более свежих узлов - это:

  • Получить список идентификаторов узлов, связанных с самыми последними узлами
  • Вызов node_load() для каждого идентификатора узла, полученного на первом шаге

Вы могли бы использовать код аналогично следующему.

   $nodes = array();
   $result = db_query_range("SELECT n.nid FROM {node} n ORDER BY n.created DESC", array(), 0, $number_of_posts);

   while ($nid = db_result($result)) {
     $nodes[] = node_load($nid);
   }

После выполнения этого кода $nodes будет содержать $number_of_posts последние узлы.

 1
Author: kiamlaluno, 2012-08-04 17:37:23