Відповіді:
Хоча ви могли витратити багато часу, розбираючи, як працює API API, ви дійсно повинні використовувати Field API безпосередньо для візуалізації контенту поля, а не самостійно запитувати базу даних. До полів додано багато інкапсуляції та абстракції, які пробудять Старих Богів, якщо їх обійти.
Використовуючи API Field, якщо ви хочете, щоб все відформатоване поле, доповнене міткою та всіма значеннями, ви хочете використовувати field_view_field():
$nid = 1;
$node = node_load($nid);
$output = field_view_field('node', $node, 'field_foo');
// $output is a render array, so it needs to be rendered first
print render($output);
Якщо ви просто хочете відобразити відформатовану величину одного елемента в полі, вам потрібно скористатися field_view_value(), що дещо більше:
// Must load field content for entity before using field_view_value()
$fields = field_get_items('node', $node, 'field_foo');
// $index corresponds to the value you want to render. First value = 0.
$index = 0;
$output = field_view_value('node', $node, 'field_foo', $fields[$index]);
print render($output);
Якщо ви хочете використовувати формат, відмінний від за замовчуванням, вказаний для екземпляра поля, передайте його, використовуючи $displayпараметр у будь-якому field_view_field()або field_view_value():
$display = array('type' => 'my_formatter');
$output = field_view_field('node', $node, 'field_foo', $display);
перевіривши api, я думаю, ви шукаєте це. (Я так і не перевірив код)
$the_field = field_view_field($entity_type, $entity, $field_name, $display = array(), $langcode = NULL);
// render the field
drupal_render($the_field);
оновлення: дублююча відповідь, може просто видалити мене. інша відповідь розміщена, коли я пишу цю відповідь.
Якщо ви використовуєте модуль користувальницьких форматів , не забудьте додати префікс "custom_formatters_" перед назвою основного форматера, як це:
$display = array('type' => 'custom_formatters_my_formatter');
Схоже, ви можете також редагувати файл шаблону, щоб налаштувати, як це виводиться семантично:
1) Налаштуйте власну програму дати та дайте назву машини на зразок "short_date_only" або будь-яку іншу. 2) Налаштуйте параметри відображення для типу вмісту для використання цього формату 3) Перемініть шаблон поля на щось на зразок поля - field_date_custom-content_type.tpl
$index(Третій параметр field_view_value ()) становить $ дельти. У полі з одним значенням це буде 0. Отже, ви можете використовувати$output = field_view_value('node', $node, 'field_foo', $fields[0]);або$output = field_view_value('node', $node, 'field_foo', $fields[$delta]);