Як мені відобразити значення поля, включаючи його формат?


9

Я читаю значення поля та його формат із бази даних. Як я можу надати це значення у форматі?

Відповіді:


36

Хоча ви могли витратити багато часу, розбираючи, як працює 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);

$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]);
johirpro

0

перевіривши api, я думаю, ви шукаєте це. (Я так і не перевірив код)

$the_field = field_view_field($entity_type, $entity, $field_name, $display = array(), $langcode = NULL);

// render the field
drupal_render($the_field);

оновлення: дублююча відповідь, може просто видалити мене. інша відповідь розміщена, коли я пишу цю відповідь.



0

Схоже, ви можете також редагувати файл шаблону, щоб налаштувати, як це виводиться семантично:

1) Налаштуйте власну програму дати та дайте назву машини на зразок "short_date_only" або будь-яку іншу. 2) Налаштуйте параметри відображення для типу вмісту для використання цього формату 3) Перемініть шаблон поля на щось на зразок поля - field_date_custom-content_type.tpl

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.