Drupal. Отлаживаем SQL запросы Views.

Иногда бывает очень полезно увидеть в режиме реального времени какие запросы выполняются нашими Views. Делается это достаточно просто. Предполагается, что Drupal стоит на Вашей локальной машине или Вы имеете ssh доступ к серверу с Drupal, модуль Devel также должен быть установлен (хотя можно переписать, чтобы работало без него, но зачем?). В своем модуле добавим хук views_pre_execute, который и будет перехватывать SQL запрос. Далее с помощью функции dd модуля Devel запишем перехваченный sql во временный файл с именем drupal_debug.txt, который создается во временной директории Drupal, путь к которой можно посмотреть здесь: admin/config/media/file-system (в моем случае это /tmp). Итак код:

function YOUR_MODULE_NAME_views_pre_execute(&$view) {
  dd("\n");
  dd((string)($view->build_info['query']));
}

Следующий шаг - это просмотр файла. Первый вариант - это открыть файл в Вашем любимом редакторе, который будет в режиме реального времени отображать изменения файла. Второй вариант - это использовать tail в терминале (для *nix систем):

tail -f /tmp/drupal_debug.txt

Обновляем страницу любого Views и проверяем как все работает.