モジュール内の段落バンドルテンプレートに送信される変数を変更するにはどうすればよいですか?


7

追加の変数をテンプレートに「送信」するために、段落バンドルのフィールド値を前処理する必要があります(paragraphs-item--xxxx--full.tpl.php)。パラグラフテンプレートにPHPロジックを入れすぎないようにしたい。

段落アイテムのnode_viewフックに似たものを探しています。フィッティングメカニズムはありますか、そのようなフックを提供するモジュールはありますか?

回答:


11

Drupal 7

これが直接役立つかどうかはわかりませんが、DropBucketでこのコードスニペットを見つけて、同様のことができるようになりました。

/**
 * Implements hook_preprocess_entity().
 */
function wwvs_slices_preprocess_entity(&$variables) {
  if ($variables['entity_type'] == 'paragraphs_item') {
    $edge = field_get_items('paragraphs_item', $variables['paragraphs_item'], 'field_edge');
    if ($edge && $edge[0]['value']) {
      $variables['classes_array'][] = 'slice--edge';
    }
  }
}

私のユースケースでは、段落で使用されているタイトルフィールドのURLセーフバージョンを使用して、段落エンティティにIDを追加したいと考えていました。これが私の実装です:

/**
 * Implements hook_preprocess_entity().
 */
function foo_preprocess_entity(&$variables) {
  if ($variables['entity_type'] == 'paragraphs_item') {
    if(isset($variables['elements']['pp_title']['#items'][0]['value'])){
      $title = $variables['elements']['pp_title']['#items'][0]['value'];
      $title = strtolower(drupal_clean_css_identifier($title));
      $variables['attributes_array']['id'] = $title;
    }
  }
}

これがお役に立てば幸いです。


6

Drupal 8

Drupal 8では、以下を使用できますhook_preprocess_HOOK

/**
 * Implements hook_preprocess_HOOK().
 */
function MYTHEME/MYMODULE_preprocess_paragraph(&$variables) {

}

/**
 * Implements hook_preprocess_HOOK().
 */
function MYTHEME/MYMODULE_preprocess_paragraph__TYPE(&$variables) {

}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.