Привет
Нужно в computed field суммировать значения полей из нескольких коллекций. Коллекции с единичными полями, а не с множественными.
У меня не получается вывести значения этих полей в computed field.
Поиском нахожу вариант только для множественного поля:
$sum = 0;
$wrapper = entity_metadata_wrapper($entity_type, $entity);
foreach($wrapper->field_pay as $collection) { $sum += $collection->field_pay_count->value(); } $entity_field[0]['value'] = $sum;
и он прекрасно работает со множественным полем. Но с единичным нет.
Перепробовала кучу вариантов, но ничего не получается. Подскажите, пожалуйста, правильный вывод единственного значения из field collection в computed field.
Спасибо!
Комментарии
<?php
if ($field_collections = field_get_items('node', $node, 'field_collection_name')) {
foreach ($field_collections as $collection) {
// Load field collection
// If it is new, it does not have key 'entity' yet
// Если вкратце - при добавлении новой коллекции в ноду, у неё при сохранении отличаются
// поля массива от коллекций добавленных ранее.
if (isset($collection['entity'])) {
$field_collection = $collection['entity'];
} else {
$loaded_collection = entity_load('field_collection_item', array($collection['value']));
$field_collection = array_shift($loaded_collection); // Уже не помню зачем, смотреть через dpm
}
// Загрузить значения поля
$collection_field = field_get_items('field_collection_item', $field_collection, 'field_from_collection');
// Обрабатываем загруженные данные, как вам угодно.
}
}
?>
Ничего не получается. Даже просто значение вывести. Скорее всего, я просто не понимаю как это работает.
Ошибок не выдает, но и результата никакого.
Может на это влиять как-то тот факт, что вывод полей коллекции в ноде контролирует модуль conditional field?
У меня три коллекции field_itemone, field_itemtwo, field_item_three. В каждом из них поле field_valueone, field_valuetwo и fieldvaluethree. Мне нужно в ноде их суммировать.
Подскажите, пожалуйста.
вам же написали нормальный пример. Если вы умеете программировать на PHP - теперь все понятно. Ну а если не умеете - вам под конкретные условия для трех коллекций трех полей кто будет код писать ?
Заменяю в коде field_collection_name, field_from_collection
Notice: Undefined variable: node в функции eval() (строка 1 в файле /home/u10857/domains/greenbet2.u10857.ocean.vps-private.net/sites/all/modules/computed_field/computed_field.module(468) : eval()'d code).
Что я делаю не так?
Переменная node не существует. А где конкретно вы пишете этот код?
Использую computed field module для суммирования полей в ноде. Вот в этом поле и пишу код.
В переменной $node должна лежать, как ни странно, нода. Изначально нода передаются в функцию computed_field в переменной $entity
Честно говоря, я думал затык у вас в том, что у новых полей в коллекции отличаются поля в массиве от уже сохранённых. Я тогда помучился. Но на объяснение базовых вещей времени тут, я полагаю, ни у кого особо нет.