おそらく、次の問題を解決する方法を知っているでしょう。template.php の field-collection-field を書き直して、出力を変更します。したがって、特定の値を含む新しい var ($my_classes) を追加しました。この値はフィールド コレクションから取得されます。次のエラーが発生したという問題に加えて、すべてが正常に機能します(クラスが追加されました-はい):
Notice: 未定義のインデックス: template_field__field_fc_page_fields() のエンティティ (..の 333 行目)
このエラーは 4 回表示されるため、今後のすべてのフィールド (-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;
}