Я читаю значение поля и его формат из базы данных. Как бы я отобразил это значение в формате?
Несмотря на то, что вы могли бы потратить много времени на анализ того, как работает Field API, вам действительно следует использовать Field API напрямую для визуализации содержимого поля, а не запрашивать базу данных самостоятельно. Есть много инкапсуляции и абстракции, добавленных к полям, которые пробудят Древних Богов, если их обойти.
Используя Field API, если вы хотите отформатировать поле целиком, с меткой и всеми значениями, вы хотите использовать 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]);
проверяя API, я думаю, что вы ищете это. (Я не проверял код в любом случае)
обновление: повторяющийся ответ, можете просто удалить меня. другой ответ опубликован, пока я пишу этот ответ.
источник
Если вы используете модуль Custom Formatters , не забудьте добавить префикс «custom_formatters_» перед именем вашего устройства форматирования, например так:
источник
Похоже, вы также можете отредактировать файл шаблона, чтобы настроить, как это выводится семантически:
1) Установите пользовательскую дату и укажите имя машины, например "short_date_only" или как угодно. 2) Настройте параметры отображения для типа контента, чтобы использовать этот формат 3) Переопределите шаблон поля на что-то вроде поля - field_date_custom-content_type.tpl
источник