Имея в своем распоряжении сущность 'paragraphs_item' (модуль Paragraphs) понадобилось узнать сущность родителя. Готового варианта не нашел, пришлось придумать свой...
Update 26.07.2018: Нашел решение:
$paragraphs_item->hostEntityType();
$paragraphs_item->hostEntity();
function _paragraph_parent($paragraph_id, $entity = FALSE) {
$f_name = db_select('paragraphs_item', 'p')
->fields('p', array('field_name'))
->condition('p.item_id', $paragraph_id)
->execute()
->fetchField();
if ($f_name) {
$parent = db_select('field_data_' . $f_name, 'fp')
->fields('fp', array('entity_id', 'entity_type'))
->condition('fp.' . $f_name . '_value', $paragraph_id)
->range(0, 1)
->execute()
->fetchObject();
//dpm($parent);
}
if ($parent) {
if ($entity) {
$parents = entity_load($parent->entity_type, array($parent->entity_id));
return count($parents) ? array_shift($parents) : FALSE;
}
return $parent;
}
return FALSE;
}
Применение:
$parent = _paragraph_parent($paragraphs_item->item_id);
$parent = _paragraph_parent($paragraphs_item->item_id, TRUE);
Первый вариант вернет объект:
{
'entity_type' = ENTITY_TYPE,
'entity_id' = ENTITY_ID,
}
Второй вариант вернет полностью загруженную сущность.
В случае неудачи получаем FALSE.
- 26.07.2018
- 48 просмотров
Добавить комментарий
Может быть интересно