2010-10-01 2 views
1

Я создал собственный модуль и использую hook_block для программного создания некоторых блоков.Чтение значений поля узла в модуле с помощью Drupal 6

Мой вопрос: как я могу получить доступ к значениям полей, включая поля CCK для текущего узла в моем модуле?

Я в основном хочу получить значение из поля CCK и использовать значение при создании моего блока для этой страницы.

ответ

3

Получение в текущем узле неудобной боли в задней части. Стандартная практика, чтобы сделать что-то вроде этого:

if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == '') { 
    $node = node_load(arg(1)); 
    // Collect output. 
} 

arg() вытягивает элементы из пути Drupal. Так как все узлы (независимо от того, что может показать вам псевдоним пути), отображаются в узле/#, проверяя «узел», а второй - число, и вы, как правило, надежно закреплены за узлом. Проверка третьего элемента пути позволяет избежать обработки в форме редактирования узла и других страниц, зависающих от определенного узла.

ССК Значения загружаются в узел, и обычно выглядит примерно так:

// Text field. Structure also works for number fields. 
$text = $node->field_my_text_field[0]['value'] 
// Node Reference field. 
$nref = $node->field_my_nref_field[0]['nid'] 
// User Reference field. 
$uref = $node->field_my_uref_field[0]['uid'] 

«0» элемент массива указывает дельта поля. Любое заданное поле может фактически обрабатывать несколько значений, и структура массива в CCK предполагает эту возможность, даже если вы ограничиваете поле единственным значением.

+0

Это фантастическое спасибо. Я удивлен, что нет встроенной функции Drupal для получения идентификатора узла! – Camsoft

Смежные вопросы