ノードタイプに埋め込まれた段落フィールドがあります。段落フィールドタイプでは、さまざまな段落バンドルをノードに挿入できます。
現在、マークアップは(Drupal 7 zen Theme)として表示されます。
<div class="paragraphs-items paragraphs-items-field-paragraphs paragraphs-items-field-paragraphs-full paragraphs-items-full">
各フィールド段落の後にクラスを追加するにはどうすればよいですか?各バンドルに独自のクラスがあるように、これを実行したいと思います。
テーマテンプレートファイルで次のことを試しましたが、各バンドルではなくフィールド全体にクラスが追加されます。
function mytheme_preprocess_paragraphs_items(&$vars, $hook) {
// This will remove all the current classes
$vars['classes_array'] = "";
// You can now add the classes you want in this array
$vars['classes_array'][] = "myclass";
}
あなたはすべきこの関数をテーマのtemplate.php
ファイルにコピーできます:
/**
* Process variables for paragraphs-items.tpl.php
*/
function mytheme_preprocess_paragraphs_items(&$variables, $hook) {
$variables['view_mode'] = $variables['element']['#view_mode'];
$variables['field_name'] = $variables['element']['#field_name'];
$variables['content'] = $variables['element']['#children'];
$variables['classes_array'][] = drupal_html_class('paragraphs-items-' . $variables['element']['#field_name']);
$variables['classes_array'][] = drupal_html_class('paragraphs-items-' . $variables['element']['#field_name'] . '-' . $variables['view_mode']);
$variables['classes_array'][] = drupal_html_class('paragraphs-items-' . $variables['view_mode']);
$variables['theme_hook_suggestions'][] = 'paragraphs_items__' . $variables['element']['#field_name'];
$variables['theme_hook_suggestions'][] = 'paragraphs_items__' . $variables['element']['#field_name'] . '__' . $variables['view_mode'];
// your code here
$variables['classes_array'][] = 'your-class';
$variables['classes_array'][] = 'your-other-class';
}
個々のアイテムに対してもこれを実行できるはずです。
/**
* Process variables for paragraphs-item.tpl.php
*/
function mytheme_preprocess_paragraphs_item(&$variables, $hook) {
// your code here
$variables['classes_array'][] = 'your-class';
$variables['classes_array'][] = 'your-other-class';
}
この機能を追加したら、キャッシュをクリアして登録します。次に、ブレークポイントを追加することでいずれかが呼び出されているかどうかを確認できます。XDebugなどがインストールされていない場合はprint 'called'; exit;
を呼び出すことができます。
2番目の関数がparagraphs_item
ではなくparagraphs_items
であることに注意してください。これらは両方とも、paragraphs.moduleでテーマフックとして定義されています。
これを行うこともできます。
/**
* Implements hook_preprocess_entity().
* @param $variables
*/
function mytheme_preprocess_entity(&$variables) {
if ($variables['entity_type'] == 'paragraphs_item' && $variables['elements']['#bundle'] == 'your_bundle') {
$variables['classes_array'][] = 'your-class';
}
}