Каким хуком извлечь значение поля ноды для использования его в кастомной функции?

Главные вкладки

Аватар пользователя runner12 runner12 26 декабря 2017 в 14:47

Здравствуйте. Возник такой вопрос.
Добавляю в ноду дополнительный контент с помощью hook_node_view. Код примерно такой:

function MYMODULE_node_view($node, $view_mode, $langcode) {
if ($node->type == 'article' && $view_mode == 'full') {
$node->content['mycontent'] = array(
'#markup' => my_custom_function(),
'#weight' => 10,
);
}
}

function my_custom_function() {
// Здесь код функции
}

Контент то добавляется, но как передать в my_custom_function() значение поля из этой ноды?

Комментарии

Аватар пользователя runner12 runner12 26 декабря 2017 в 14:59

Да вот я пробовал в hook_node_view выполнить:
$my_id = $node->field_myfield[LANGUAGE_NONE][0]['my_id'];

и затем подставить $my_id в my_custom_function(), но выдает ошибку:
Notice: Undefined variable: my_id in my_custom_function()

Что я делаю не так?

Аватар пользователя bumble bumble 26 декабря 2017 в 15:34
2

runner12 wrote:

Что я делаю не так?

  1. Не оборачиваете код в описании и комментах, из-за чего его смотрит меньше людей, что потенциально уменьшает шансы получить ответ на Ваш вопрос.
  2. Что еще за "my_id"? Какой там тип поля? Обычно, данные поля хранятся с ключом "value". Посмотрите доступные значения в массиве поля с помощью Devel или [man=var_dump]var_dump[/man].
Аватар пользователя runner12 runner12 26 декабря 2017 в 21:53

1. Не знал, спасибо что Вы подсказали.
2. Какой там тип поля? - Поле типа YouTube Video создано модулем YouTube Field. Собственно, мне нужно не само значение поля, нужен идентификатор ролика YouTube. Как Вы и говорите - смотрю Девелом. Девел говорит, что значение идентификатора можно извлечь из этого поля так:
<?php$node->field_video[LANGUAGE_NONE][0]['video_id']?>

Аватар пользователя bumble bumble 27 декабря 2017 в 0:57

Добавьте проверки:

  • на существование поля
  • на наличие значений в поле

Если все истинно - извлекайте свои значения.