Значение поля в чистом виде (без оберток оформления) может понадобиться, например, для подстановки этого значения в строку запроса или для сохранения в глобальную переменную и т.д.
В типовом варианте шаблона node.tpl.php для Drupal7 значения полей выводятся на страницу с помощью кода:

print render($content);

Таким способом выводятся все поля чохом. Перенести расположение некоторых полей вниз страницы позволяет такая конструкция (именно она и используется в оригинале):

<div class="content"<?php print $content_attributes; ?>>
<?php
     
// Скрываем комментарии и ссылки сейчас, чтобы вывести их позднее
     
hide($content['comments']);
     
hide($content['links']);
      print
render($content);
?>

</div>
// Выводим комментарии и ссылки
<?php print render($content[';links']); ?>
<?php print render($content['comments']); ?>

В последних двух строках на страницу сайта выводятся значения конкретных полей. Но функция render возврашает их в соответствующей обертке html-кода, не говоря уже о том, что внутри этой обертки не само значение, которое мы видим на экране, а массив (array). А для начей задачи, описанной вначале, такой результат совершенно непригоден.

Поэтому, для получения значения поля в ноде используем такой код:

<?php
     $fldnm
= 'field_имя'; // машинное имя поля (подставить свое), берется из свойств типа материала
    
$lng = $node->language; // определяем язык (эту строку не изменять)
    
$rez=$node->{$fldnm}[$lng][0]['value']; // результат
?>

Теперь в переменной $rez искомое значение поля текущей ноды.

Ист. (анг.): http://stackoverflow.com/questions/5066858/reading-node-field-values-in-drupal7-programmatically

Рубрики: 

Ярлыки: 

Комментарии