Студия разработки сайтов и приложений

Netspark.ru

Про $user и $node в Друпале

Сегодня в очередной раз исследовал устройство и в 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

Я, собственно, почему все это пишу. Потому что воспоминания об отладке навели меня на мысль, что пора уже сделать описания объектов и положить их на видное место. Пригодятся, наверняка.

Описание объектов

Комментарии