Здравствуйте.
Столкнулся со следующей проблемой. Есть тип материала лендинг, который состоит из множественного поля 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? Спасибо.
Комментарии
В модуле есть файл - field_collection.api.php. В нем ищите:
<?php
hook_field_collection_item_view
hook_field_collection_item_load
?>
С field_collection_item_load($fcid) получаю такой же результат, как и с entity_load('field_collection_item', array($fcid)). Не совсем понял что с этим делать. Через отладку не вижу как вывести нужный мне блок.
Понятия не имею, что у вас под $fcid... но там должна быть сущность.
Загружать - выводить
Какой?
$fcid = $node->field_selectbox['und'][$i]['value']; - из примера в моем вопросе, где field_selectbox - Field Collection.
Делаю отладку.
$entity = field_collection_item_load($fcid);
krumo($entity);
Отладка показывает следующую запись:
Мне вот только это интересно:
Вы когда структуру такую придумываете, чего добиться хотите?
field_selectbox
field_selectbox - это поле Field Collection. В настройках поля указано, что при создании ноды я могу создавать неограниченное количество таких полей.
В свою очередь field_selectbox состоит из нескольких полей, например:
field_a - заголовок
field_b - текст
field_block - ссылка на блок.
Таким образом я могу делать страницы лендингов со следующей структурой:
Заголовок1
Основной текст1
Блок1 (к примеру, Views список компаний)
Заголовок2
Основной текст2
Блок2 (к примеру, карта Гугл)
-----------------------
Ну, на сколько знаю знаю, любители лэндингов сейчас все делают на параграфах...
Может это ваш вариант, вместо field_collection?
Возможно. Но хотелось бы иметь контроль над созданием лендинга на уровне шаблона, там просто есть свои заморочки со стилями и т.д.
Такое впечатление, что после того, как мы сделали загрузку поля field_selectbox, нужно еще как-то сделать дополнительно загрузку поля field_block.