web-dev-qa-db-ja.com

埋め込まれた段落のフィールド項目にクラスを追加するにはどうすればよいですか?

ノードタイプに埋め込まれた段落フィールドがあります。段落フィールドタイプでは、さまざまな段落バンドルをノードに挿入できます。

現在、マークアップは(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";
}

Paragraphs

2
T Mardi

Drupal 7

あなたはすべきこの関数をテーマの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';
  }
}
2
Kevin