Как получить первое поле изображения из узла, не зная имени поля? - PullRequest
1 голос
/ 12 июля 2011

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

Мне нужно получить первое поле изображения от узла, при условии, что к узлу привязано больше полей изображениязная имя любого из этих полей.Первым считается тот, у которого weight.

ниже.

1 Ответ

1 голос
/ 12 июля 2011

Это должно создать вам массив «самого легкого» поля изображения для типа контента.

<?php
module_load_include('inc', 'content', 'includes/content.node_form');
$content_types = array('page', 'story', 'product', 'some_content_type');

$lightest_imagefields = array(); // arranged by content type
foreach ($content_types as $content_type_name) {
  $content_type_data = content_types($content_type_name);
  $last_weight = NULL;
  foreach ($content_type_data['fields'] as $field_name => $field_data) {
    if ($field_data['widget']['type'] == 'imagefield_widget' && (is_null($last_weight) || (int)$field_data['widget']['weight'] < $last_weight)) {
        $lightest_imagefields[$content_type_name] = $field_name;
        $last_weight = (int)$field_data['widget']['weight'];
    }
  }
}
/** Hypothetical Usage:
 * $node = load_some_node_i_want();
 * $node->$lightest_imagefields[$node->type]; // Access this node's lightest imagefield.
 */

Затем, когда вы загружаете узел, скажем, типа контента «product», вы знаете, какое поле изображениясамый легкий (то есть $node->$lightest_imagefields[$node->type]).

Надеюсь, это поможет.(проверьте его перед использованием, хотя!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...