Программный вывод views в Drupal

Как известно модуль Views создает тяжелые запросы к базе данных со множеством джоинов. При большом количестве материалов на сайте, это всё дело начинает тупить.
Одним из способов решения данной проблемы является создание своего оптимизированного запроса к базе данных и вывод результата программно с помощью уже созданного вьюса.

Для вывода вьюса в качестве аргумента используем строку с номерами нод, соединенных символом "+".

  1. function mymodule_display_myview() {
  2.  
  3. $query = db_query('SELECT node.nid
  4. FROM node
  5. WHERE node.type = "articles"
  6. ORDER BY node.created DESC LIMIT 0, 10');
  7.  
  8. while ($data = db_fetch_object($query)) {
  9. $nodes .= $data->nid . '+';
  10. }
  11. $nodes = drupal_substr($nodes, 0, drupal_strlen($nodes) -1);
  12.  
  13. //получаем объект вьюса по его машинному имени
  14. $myview = views_get_view('my_view_name');
  15.  
  16. //получаем вывод вьюхи, задав имя дисплея и передав
  17. //в массиве строку аргументов
  18. $display = $myview ->execute_display('block', array($nodes));
  19. $output = $display ['content'];
  20.  
  21. return $output;
  22. }

Не забываем во вьюхе указать Аргументы "Материал: Nid"