Отладка кода в Drupal
Для отладки кода в drupal есть несколько вариантов:
1.
Это функции для вывода информации о переменных:
dpm($input, $name = NULL). Использует drupal_set_message.
dvm($input, $name = NULL)
dpr($input, $return = FALSE, $name = NULL)
dvr($input, $return = FALSE, $name = NULL)
kpr($input, $return = FALSE, $name = NULL)
dargs()
dd($data, $label = NULL)
ddebug_backtrace()
Для показывать списка sql запросов, выполненных при генерации страницы. В списке выводится сам запрос, время выполнения, функция, в которой был вызван запрос, информация об аргументах и возможность просмотреть EXPLAIN запроса (скриншот). Есть опция подсветки медленных запросов и возможность отсортировать список по времени выполнения.
db_queryd($query, $args = array())
Подробнее по функциям
Модуль умеет еще много чего, здесь перечислять пока не буду.
2. В drupal 7 и 8 есть уже встроенная функция debug, используемая для вывода отладочной информации. Её можно использовать, как в файлах модуля и так и темы.
Например, вставим в шаблон node.tpl.php такую строку:
<?php debug($content['links']['comment']); ?>
В Drupal 6 стандартно: print_r(). Можно добавить <pre> </pre> для удобства.
3. Те, кто не любит использовать модуль devel из-за его тяжести, можно использовать простенькую функцию, постив ее в файл settings.php(не моё, утащила):
/**
* @param
* $msg - то что хотим показать, переменная , массив, объект
* $title - опционально, метка
* $pre - обрамлять тэшгами - полезно для показа массивов и объектов
* $out - если TRUE, выводить через drupal_set_message, иначе вернуть информацию
*/
function dbg($msg, $title = '', $pre = TRUE, $out = TRUE) {
global $user;
// выводим только для админа, в принципе можете изменить uid на другой,
// что бы выводилось под вашим экаунтом;
if ($user->uid == 1) {
if ($out) {
$info = print_r($msg,1);
if ($pre) {
$info = '<pre>' . $info . '</pre>';
}
if (!empty($title)){
$info = '' . $title . '
' . $info;
}
}
if ($out) {
drupal_set_message($info);
}
else {
return $info;
}
}
}
теперь, чтобы посмотреть какую-либо информацию, достаточно в коде вставить нашу функцию:
dbg($value);