web-dev-qa-db-ja.com

段落の前処理でコンテンツタイプを確認する

完全に機能する段落前処理関数を書きました。唯一の問題は、その段落が特定のコンテンツタイプに埋め込まれている場合にのみ機能する必要があることです。

function mytheme_preprocess_paragraph__paragraph_type(&$variables) {
   // Do things here if content type == 'specified_type'
}

ただし、コンテンツタイプを確認する方法がわかりません。どうすればこれを達成できますか?

6
Vecta

段落を参照するエンティティデータを取得する正しい方法は、段落のエンティティAPIを使用することです。

/**
 * Implements template_preprocess_paragraph().
 *
 * @param array $variables
 *   An associative array containing:
 *   - elements: An array of elements to display in view mode.
 *   - paragraph: The paragraph object.
 *   - view_mode: View mode; e.g., 'full', 'teaser'...
 */

function mytheme_preprocess_paragraph(&$variables) {
  /** @var \Drupal\paragraphs\Entity\Paragraph $paragraph */
  $paragraph = $variables['paragraph'];
  // Get the parent bundle.
  $parentBundle = $paragraph->getParentEntity()->bundle();
}
14
hugronaphor