Поле Drupal7, которое не хранит данные - как я могу получить его для рендеринга? - PullRequest
2 голосов
/ 22 января 2012

Что вы делаете, когда у вас есть поле, в котором нет данных? Поле содержит только производные данные.

Я использую Drupal7, и я создал поле в модуле. В этом поле не хранятся данные - когда кто-то вызывает MYMODULE_field_formatter_view, он получает массив визуализации, который содержит анализ узла. Это программа контроля качества, которая указывает на проблему с качеством содержимого узла.

Все отлично работает! В представлении я могу вызвать это поле, указать view_type (их несколько), и оно работает.

До ...

Я был в search-results.tpl.php и позвонил drupal_render(node_view($node,"qc"));

Все отображается как ожидалось , но поле анализа не имеет HTML. Заголовок появляется, а содержание - нет. Массив рендеринга для node_view содержит данные, как и ожидалось, но не печатается.

Единственное, о чем я могу думать, это:
Поле в узле пустое. Например: $node->field_analysis пусто. Я думаю, это потому, что пользователь никогда не использовал виджет для создания данных для поля, потому что, ну, он не нужен.

Вопрос такой:
Как, когда узел создается, я могу каким-то образом создать поддельные данные для помещения в $node->field_analysis?

Есть ли другой подход?

Большое вам спасибо за ваше время.

Чад

1 Ответ

3 голосов
/ 22 января 2012

Я не уверен, что поле действительно подходит для этого типа функций; поля для хранения данных, поэтому иметь поле без данных не имеет смысла.

Вместо этого я бы посоветовал использовать один или несколько из следующих хуков:

Например, вы можете использовать hook_node_load(), чтобы прикрепить ваши данные качества к узлу, когда он загружен из базы данных, и hook_node_view(), чтобы добавить дополнительный контент при просмотре узла.

Если вы хотите отобразить данные в форме редактирования узла, вы должны реализовать hook_form_alter().

...