Одним из часто возникающих вопросов при разработке на Drupal является то, как вывести значение поля типа link в tpl файле. В этой статье мы рассмотрим несколько способов, которые могут помочь вам решить эту задачу.

Использование функции field_view_value()

Один из способов вывести значение поля типа link — использование функции field_view_value(). Эта функция позволяет получить отформатированное значение поля, готовое для вывода на сайте. Вот как это можно сделать:

$field = field_get_items('node', $node, 'field_link');
$output = field_view_value('node', $node, 'field_link', $field[0]);
print render($output);

Использование форматтера поля

Еще один способ вывести значение поля типа link — использование форматтера поля. Форматтер позволяет задать определенный формат вывода для значения поля. В Drupal существует несколько стандартных форматтеров, но также вы можете создать свой собственный. Вот пример использования стандартного форматтера:

$field = field_get_items('node', $node, 'field_link');
$output = field_view_field('node', $node, 'field_link', array('label' => 'hidden'));
print render($output);

Использование шаблона поля

Иногда возникает необходимость полностью контролировать вывод значения поля типа link. В этом случае вы можете создать свой собственный шаблон поля и определить в нем нужный вам формат вывода. Вот пример создания и использования шаблона поля:

function THEME_preprocess_field(&$variables) {
  if ($variables['element']['#field_name'] == 'field_link') {
    $variables['theme_hook_suggestions'][] = 'field__link';
  }
}

В файле field--link.tpl.php вы можете определить необходимый вам формат вывода значения поля. Например:

<a href="<?php print $items[0]['url']; ?>"><?php print $items[0]['title']; ?></a>

Для вывода значения поля типа select вы можете использовать функию field_view_value(), аналогично тому, как это было показано для поля типа link в предыдущем примере.

Для вывода значения поля типа image вы можете использовать функцию field_view_value() и указать требуемый формат вывода. Например, так:

$field = field_get_items('node', $node, 'field_image');
$output = field_view_value('node', $node, 'field_image', $field[0], array(
  'type' => 'image',
  'settings' => array(
    'image_style' => 'thumbnail',
    'image_link' => 'content',
  ),
));
print render($output);

Для вывода значения многострочного поля вы можете использовать функцию field_view_value() и выбрать требуемый формат вывода. Например, так:

$field = field_get_items('node', $node, 'field_textarea');
$output = field_view_field('node', $node, 'field_textarea', array(
  'type' => 'text_default',
));
print render($output);