Верстка Entity Reference полей Drupal 7

Опубликовано: 23.12.2017

видео Верстка Entity Reference полей Drupal 7

Drupal. Основы работы с типами материалов

Всем добра! Решил описать путь, который сам прошел, не найдя на русском предметной информации по сабжу.


Вывод обратных ссылок модуля Entity reference

В node--foo.tpl мы можем вывести отрендеренное друпалом поле вот так:

<?php print render($content['field_foo']); ?>

field_foo это поле типа Entity Reference, в моем случае оно связывает материал node--foo с материалом node--bar, т.е. мы имеем дело со связью нода-нода.

Что делать, если верстка поля, подготовленная рендером друпала, не устраивает? в node--bar.tpl.php мы можем изменить верстку, и эта новая верстка будет справедлива для всех материалов типа bar.


2.1 - Материалы сайта Drupal 8. Типы материалов, ноды.

Допустим, у нас есть поле speaker_photo (Image). В node--bar.tpl.php

<?php print render($content['field_speaker_photo']); ?>

Подготовленный render() HTML будет такой:

<div class="field field-name-field-speaker-photo field-type-image field-label-hidden field-wrapper"> <img typeof="foaf:Image" src="path" alt="alt" height="200" width="200"> </div>

Мне понадобилось привести верстку к такому виду (по два изображения в блоке-родителе):

<div id="foo-parent"> <div class="field field-name-field-speaker-photo field-type-image field-label-hidden field-wrapper"> <img typeof="foaf:Image" src="path" alt="alt" height="200" width="200"> </div> <div class="field field-name-field-speaker-photo field-type-image field-label-hidden field-wrapper"> <img typeof="foaf:Image" src="path" alt="alt" height="200" width="200"> </div> </div>

Делать что-то в node--bar.tpl.php не имеет смысла, ибо он имеет дело с конкретной нодой (полем в ноде), необходимые манипуляции решил делать в node--foo.tpl.php (можно и в template темы сделать).

Если в node--foo.tpl.php сделаем вот так для Entity Reference поля

<?php print render($content['field_foo']); ?>

обнаружим уже приведенный HTML из node--bar.tpl.php

Что же скрывается в $content? Никто не мешает посмотреть

<?php dsm($content);

Видим, что $content['field_foo'] включает в себя немало разнообразного бобра, загвоздка здесь в том, что мы не знаем ID связанных нод для доступа к значениям (URI изображения).

rss