也许您知道我如何解决以下问题。我在我的 template.php 中重写了一个 field-collection-field 来更改输出。因此,我刚刚添加了一个包含特定值的新 var ($my_classes)。该值来自字段集合。一切正常(我的课程已添加 - 是的),除了我收到以下错误的问题:
注意:未定义索引:template_field__field_fc_page_fields() 中的实体(..
这个错误会弹出四次,所以每个即将到来的字段(-collection)都会抛出这个错误。这是我的代码:
function template_field__field_fc_page_fields($variables) {
kpr($variables);
$output = '';
// Render the label, if it's not hidden.
if (!$variables['label_hidden']) {
$output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ': </div>';
}
// Render the items.
foreach ($variables['items'] as $delta => $item) {
// Custom class
$my_classes = $variables['items'][$delta]['entity']['field_collection_item'][$delta+1]['field_layout']['#items'][0]['value'];
$classes = 'field-item ' . ($delta % 2 ? 'odd' : 'even');
$output .= '<div class="' . $classes . ' ' . $my_classes .'"' . $variables['item_attributes'][$delta] . '>' . drupal_render($item) . '</div>';
}
// Render the top-level DIV.
$output = '<div class="' . $variables['classes'] . '"' . $variables['attributes'] . '>' . $output . '</div>';
return $output;
我不是程序员,所以希望你能帮助我!非常感谢!!!
这是解决方案: 问题是,当您尝试更改字段集合的输出时,您还会更改字段集合中没有实体 ID 的继承字段。所以你只需要在 $classes 上使用 isset(感谢@Hans Nilson)并提取实体的 id 以在你的函数中使用它。这是代码中的解决方案:
function template_field__field_fc_page_fields($variables) {
// kpr($variables);
$output = '';
// Render the label, if it's not hidden.
if (!$variables['label_hidden']) {
$output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ': </div>';
}
// Render the items.
foreach ($variables['items'] as $delta => $item) {
if (isset($variables['items'][$delta]['entity']) && (isset($variables['element']['#items'][$delta]['value']))) {
$fc_id = ($variables['element']['#items'][$delta]['value']);
$my_classes = $variables['items'][$delta]['entity']['field_collection_item'][$fc_id]['field_layout']['#items'][0]['value'];
}
if (isset($variables['items'][$delta]['entity'])) {
$classes = 'field-item-custom ' . $my_classes . ' ' . ($delta % 2 ? 'odd' : 'even');
}
else {
$classes = 'field-item ' . ($delta % 2 ? 'odd' : 'even');
}
$output .= '<div class="' . $classes . '"' . $variables['item_attributes'][$delta] . '>' . drupal_render($item) . '</div>';
}
// Render the top-level DIV.
$output = '<div class="' . $variables['classes'] . '"' . $variables['attributes'] . '>' . $output . '</div>';
return $output;
}