私は hook_theme_suggestions_HOOK_alter
:
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;
}
これでuser--full.html.twig
およびuser--compact.html.twig
しかし、私にはeditor
の役割があり、user--compact--editor.html.twig
ピックアップされます。ユーザーの役割に基づいてテンプレートの提案を追加するにはどうすればよいですか?
現在のユーザーオブジェクトを取得し、その役割を取得して、次のスニペットのように提案を追加するだけです。現在のユーザーは既に$variables
。
/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function MYTHEME_theme_suggestions_user_alter(array &$suggestions, array $variables) {
// Define the view mode.
$mode = $variables['elements']['#view_mode'];
// Create a theme hook suggestion which has the view mode name in it.
$suggestions[] = 'user__' . $mode;
// Get current user.
$current_user = $variables['elements']['#user'];
// Get current user's roles.
$roles = $current_user->getRoles();
// Add suggestion per role.
foreach ($roles as $role) {
$suggestions[] = 'user__' . $mode . '__' . $role;
}
}
これはあなたに与えるでしょう:
<!-- FILE NAME SUGGESTIONS:
* user--full--administrator.html.twig
* user--full--authenticated.html.twig
* user--full.html.twig
x user.html.twig
-->