Сегодня в очередной раз исследовал устройство и в Drupal 6, а также устройство содержащихся в массивов и . Природная лень не позволяет мне взять и сделать раз и на всегда справочное описание этих объектов и держать его под рукой. На сайте Друпала оное описание тоже днем с огнем не найдешь, что само по себе довольно странно. Короче говоря, приходится то и дело получать его с помощью функции
:
global $user;
print_r($user);
$node = node_load(/*id какого-нибудь нода*/);
print_r($node);
$files
$taxonomy
$node
$node
$user
print_r
Красота да и только. Тем не менее, в процессе изучения вспомнился любопытный баг, с которым я боролся еще до появления домовой страницы. Ошибка эта, наверное, часто встречается, поскольку описание упомянутых объектов найти непросто, а ошибиться как раз наоборот - очень просто.
В общем, дело было так. Писал я тогда модуль, который, в том числе, вводил новые типы содержимого. Ввел я их и стал проверять, как все работает. Сразу не заметил, но через некоторое время обратил внимание, что все ноды нового типа появляются за авторством пользователя по фамилии "Гость", хотя создавал я их совершенно точно админской рукою. Дальше как обычно - везде смотрел, искал, отлаживал и в конце-концов отключил показ автора для нодов (кстати, это тоже очень интересный ребус в Друпале). Потом осенило посмотреть описание , и вдруг оказалось, что движок друпаловый берет имя автора да и присовокупляет к объекту нода (). А я для нового типа содержимого как раз создал дополнительное поле "Имя", сдуру назвал его "name" и сохранял его по
, и загружал - по hook_insert
. Вот оно и перекрывало исходное поле имени автора, а в результате конфликта авторы нодов становились "гостями".hook_load
$node->name
$node
Я, собственно, почему все это пишу. Потому что воспоминания об отладке навели меня на мысль, что пора уже сделать описания объектов и положить их на видное место. Пригодятся, наверняка.