it-swarm.com.de

Wie füge ich twig Vorlagenvorschläge pro Anzeigemodus mit benutzerdefiniertem Modul hinzu?

Ich habe ein benutzerdefiniertes Modul, in dem ich versuche, benutzerdefinierte twig - Vorlagen basierend auf dem Benutzer Ansichtsmodus Die Vorlagendateien, die ich meinem Thema hinzufügen möchte, sind:

  • user.html.twig
  • user--compact.html.twig
  • user--token.html.twig

Diese befinden sich in einem Ordner namens MYMODULE/templates/.

Dies ist mein aktueller Modulcode:

module_name.module :

/**
 * Implements hook_theme().
 */
function MYMODULE_theme($existing, $type, $theme, $path) {

  return [
    'user' => [
      'template'  => 'user',
      'base hook' => 'user',
    ],
    'user__compact' => [
      'template'  => 'user--compact',
      'base hook' => 'user',
    ],
    'user__token' => [
      'template'  => 'user--token',
      'base hook' => 'user',
    ],
  ];

}
3
Prestosaurus

Das hook_theme_suggestions_HOOK_alter() ist besser geeignet, um vorhandene Vorschläge zu ändern.

In diesem Fall können Sie hook_theme_suggestions_HOOK verwenden, wenn Sie nur einen Vorschlag hinzufügen und die bereits vorhandenen nicht ändern.

/**
 * Implements hook_theme_suggestions_HOOK().
 */
function MYMODULE_theme_suggestions_user(array $variables) {
  return [
    'user__' . $variables['elements']['#view_mode']
  ];
}

/**
 * Implements hook_theme().
 */
function MYMODULE_theme($existing, $type, $theme, $path) {

  return [
    'user' => [
      'template'  => 'user',
      'base hook' => 'user',
    ],
    'user__compact' => [
      'template'  => 'user--compact',
      'base hook' => 'user',
    ],
    'user__token' => [
      'template'  => 'user--token',
      'base hook' => 'user',
    ],
  ];
}
3
Cesar Moore

Das Update bestand darin, die Themenvorschläge über HOOK_theme_suggestions_HOOK_alter() hinzuzufügen und eine Vorlage von user auf user__full Zu ändern. Unten ist der aktualisierte Modulcode:

/**
 * Implements hook_theme_suggestions_HOOK_alter().
 */
function MYMODULE_theme_suggestions_user_alter(&$suggestions, $variables) {

  $view_mode = $variables['elements']['#view_mode'];
  $suggestions[] = 'user__' . $view_mode;
}

/**
 * Implements hook_theme().
 */
function MYMODULE_theme($existing, $type, $theme, $path) {

  return [
    'user__full'    => [
      'template'  => 'user--full',
      'base hook' => 'user',
    ],
    'user__compact' => [
      'template'  => 'user--compact',
      'base hook' => 'user',
    ],
    'user__token'   => [
      'template'  => 'user--token',
      'base hook' => 'user',
    ],
  ];
}
2
Prestosaurus