Ссылка на сущность использует другие поля в режимах просмотра

У меня есть студенческие книжные продукты в drupal 7, у которых есть книжный продукт учителя-компаньона. Я хочу создать режим просмотра, который представляет книгу ученика (отображение продукта) вместе со ссылкой на сущность книги учителя, которая также является книжным продуктом. Дело в том, что я могу отображать идентификатор, заголовок или визуализированный объект, но не другие поля объекта. Я хочу отобразить это:

ISDN учащегося: ______

ISDN учителя: ______

... Другие поля продукта (Студент) ...

Я пробовал несколько модулей, таких как набор дисплеев, но ничего не вышло, не могли бы вы помочь? что мне не хватает?


person dotoree    schedule 10.02.2013    source источник


Ответы (2)


Быстрое решение — создать новый шаблон узла для вашего типа контента. Например: node--student.tpl.php, затем используйте следующий код в качестве примера:

$referenced_node = node_load($node->field_ref[LANGUAGE_NONE]['0']['target_id']);
print node_view($referenced_node, "teaser");

Надеюсь это поможет.

person Muhammad Reda    schedule 10.02.2013
comment
Я не использую представления, я просто использую режим просмотра для отображения одного узла. - person dotoree; 10.02.2013
comment
Не уверен, что node_load работает с сущностями, я пытаюсь сделать это через модуль, используя hook_node_view(). - person dotoree; 10.02.2013
comment
Этот код извлекает nid из ссылающегося узла, а затем использует node_load для загрузки объекта узла. Ничего странного :) - person Muhammad Reda; 10.02.2013
comment
Я использую ссылку на сущность. Я получаю сущность следующим образом: $teachers_book_entity = $node-›field_teacher_book[LANGUAGE_NONE][0]['entity']; Также мне не нужно печатать режим просмотра (тизер) только поле: ISBN. - person dotoree; 10.02.2013
comment
Если вы загрузите весь узел книги учителя, используя описанный выше метод node_load, вы сможете получить доступ к любому из полей... - person Boriana Ditcheva; 11.02.2013

Я сделал это следующим образом:

  // Initial weight
  $weight = 2;
  // Student's book entity
  $student_book_entity = $node->field_student_book[LANGUAGE_NONE][0]['entity'];

  // Get Student's book ISBN and alter some attributes
  $student_isbn_field = array_merge(field_view_field('commerce_product', $student_book_entity, 'field_book_isbn'), array(
      '#field_name' => 'field_students_book_isbn',
      '#title' => t('Student\'s Book ISBN'),
      '#weight' => $weight++,
    )
  );
  $node->content['field_students_book_isbn'] = $student_isbn_field;

  // Teacher's book entity
  $teachers_book_entity = $node->field_teacher_book[LANGUAGE_NONE][0]['entity'];

  // Get Teacher's book ISBN and alter some attributes
  $teacher_isbn_field = array_merge(field_view_field('commerce_product', $teachers_book_entity, 'field_book_isbn'), array(
      '#field_name' => 'field_teachers_book_isbn',
      '#title' => t('Teacher\'s Book ISBN'),
      '#weight' => $weight++,
    )
  );
  $node->content['field_teachers_book_isbn'] = $teacher_isbn_field;
person dotoree    schedule 18.02.2013