web-dev-qa-db-ja.com

Twigユーザーのデフォルト、コンパクト、およびユーザーアカウントビューモードのテンプレートの提案

デフォルト、コンパクト、またはユーザーアカウントを使用するときに、user.html.twigとは異なるテンプレートを作成して、別の表示モードにする方法はありますか

User--compact.html.twigのようなもの?

6
usethe23

これを行うには、テーマ内にテーマ提案の変更フックを作成します。

_/**
 * Implements hook_theme_suggestions_user_alter().
 *
 *   An array of alternate, more specific names for template files or theme
 *   functions.
 */
function MYTHEME_theme_suggestions_user_alter(&$suggestions, $vars, $hook) {

  // Define the view mode.
  $mode = $vars['elements']['#view_mode'];

  // Create a theme hook suggestion which has the view mode name in it.
  $suggestions[] = 'user__' . $mode;
}
_

注:_$vars['elements']['#view_mode'];_は、ユーザーのビューモード配列を表示するために、この関数の下でkint($vars)を使用して派生したものです。

このコードをテーマの.themeファイルに追加して、キャッシュをクリアできます。キャッシュをクリアすると、Twig debug内に新しいテーマの提案が表示されます。

私の場合、「完全表示モードなので、_user--full.html.twig_が表示されるのはそのためです。ユーザーをコンパクトモードで表示している場合は、_user--compact.html.twig_の提案が表示されます。

14
Danny Englander