Достать поле Block Reference из Field Collection и вывести в шаблоне

Аватар пользователя buldozer_kpi buldozer_kpi 17 ноября в 2:18

Здравствуйте.
Столкнулся со следующей проблемой. Есть тип материала лендинг, который состоит из множественного поля Field Collection, которое в свою очередь состоит из field_a, field_b, field_block, где field_block – это поле Block Reference (поле, с помощью которого в ноду можно вставить блок).

Если я поле field_block не запихиваю в Field Collection, а просто делаю полем ноды, то через конструкцию типа <?php print render($content['field_block'];?> в любом месте шаблона ноды я могу вывести нужный мне блок и он нормально отображается.

Но вот если я запихиваю это поле в Field Collection, то уже к этому полю я не могу программно достучаться и вывести нужный мне блок. При этом к другим полям я имею доступ, например к полю field_a:

<?php
   $fcid 
$node->field_selectbox['und'][$i]['value'];
   
$field_collecttion entity_load('field_collection_item', array($fcid));
   
$val $field_collecttion[$fcid]->field_a['und'][0]['value']; 
   print 
$val;
?>

при этом <?php $val $field_collecttion[$fcid]->$content['field_block']; ?> уже не работает.

Подскажите как можно достать поле блока из Field Collection? Спасибо.

Комментарии

Аватар пользователя adano adano 17 ноября в 6:35

В модуле есть файл - field_collection.api.php. В нем ищите:

<?php
hook_field_collection_item_view
hook_field_collection_item_load
?>
Аватар пользователя buldozer_kpi buldozer_kpi 17 ноября в 11:23

С field_collection_item_load($fcid) получаю такой же результат, как и с entity_load('field_collection_item', array($fcid)). Не совсем понял что с этим делать. Через отладку не вижу как вывести нужный мне блок.

Аватар пользователя adano adano 17 ноября в 11:45

Понятия не имею, что у вас под $fcid... но там должна быть сущность.

buldozer_kpi wrote: Не совсем понял что с этим делать.

Загружать - выводить

получаю такой же результат

Какой?

Аватар пользователя buldozer_kpi buldozer_kpi 17 ноября в 11:54

$fcid = $node->field_selectbox['und'][$i]['value']; - из примера в моем вопросе, где field_selectbox - Field Collection.
Делаю отладку.
$entity = field_collection_item_load($fcid);
krumo($entity);
Отладка показывает следующую запись:

Аватар пользователя adano adano 17 ноября в 11:56

Мне вот только это интересно:
Вы когда структуру такую придумываете, чего добиться хотите?

field_block
field_selectbox
Аватар пользователя buldozer_kpi buldozer_kpi 17 ноября в 12:03

field_selectbox - это поле Field Collection. В настройках поля указано, что при создании ноды я могу создавать неограниченное количество таких полей.
В свою очередь field_selectbox состоит из нескольких полей, например:
field_a - заголовок
field_b - текст
field_block - ссылка на блок.
Таким образом я могу делать страницы лендингов со следующей структурой:
Заголовок1
Основной текст1
Блок1 (к примеру, Views список компаний)

Заголовок2
Основной текст2
Блок2 (к примеру, карта Гугл)
-----------------------

Аватар пользователя adano adano 17 ноября в 12:12

Ну, на сколько знаю знаю, любители лэндингов сейчас все делают на параграфах...
Может это ваш вариант, вместо field_collection?

Аватар пользователя buldozer_kpi buldozer_kpi 17 ноября в 12:25

Возможно. Но хотелось бы иметь контроль над созданием лендинга на уровне шаблона, там просто есть свои заморочки со стилями и т.д.
Такое впечатление, что после того, как мы сделали загрузку поля field_selectbox, нужно еще как-то сделать дополнительно загрузку поля field_block.