it-swarm.com.de

hook_theme_suggestions_hook_alter () funktioniert nicht für Ansichten

Ich versuche, eine benutzerdefinierte Vorlage für eine Ansichtsseite in Drupal 8.3.x.) zu erstellen. Sie wird in einem benutzerdefinierten Design erstellt und muss eine Vorlage auf Ansichtsebene sein (also keine Seiten- oder Knoten-).

Ich habe eine Weile damit gekämpft und gedacht, dass es ein Problem mit dem spezifischen Namen sein könnte, also habe ich den Code so spärlich wie möglich gemacht - immer noch kein Glück.

Ich habe den folgenden Code in mytheme.theme:

function mytheme_theme_suggestions_views_view_alter(array &$suggestions, array $variables) {
  $suggestions[] = 'test_template';
}

Und die folgende Dateistruktur:

- mytheme
  ~ templates
    * test-template.html.twig
  ~ mytheme.theme
  ~ mytheme.info.yml
  ~ ... etc.

Ich weiß, dass die Funktion theme_suggestions alter ordnungsgemäß funktioniert. Ich habe Twig Debugging aktiviert, und wenn ich meine Site aufrufe und mir den Code ansehe, kann ich Folgendes sehen: (Beachten Sie das "X" neben views-view.html.twig das als aktuell verwendete Twig Datei)

<!-- FILE NAME SUGGESTIONS:
   * test-template.html.twig
   x views-view.html.twig
-->

Also fügt es den Vorschlag hinzu. Und die Vorlagendatei ist korrekt benannt. Ich weiß, dass es sich nicht um ein Verzeichnisproblem handelt, da sich in diesem Ordner/templates/andere .html.twig-Dateien befinden, die ordnungsgemäß funktionieren.

Weiß jemand, warum der Dateinamenvorschlag funktioniert, die passende Datei jedoch nicht?


Bearbeiten: Kevin wies im Kommentar unten auf ein mögliches doppeltes Ticket hin. Das hängt nur zur Hälfte zusammen. Es löst das Symptom in diesem speziellen Beispiel - Ich konnte eine der hier genannten Vorlagen einlesen, und es funktioniert in diesem Fall.

Der Titel des Tickets und die allgemeine Ausgabe gelten jedoch weiterhin. Ich kann den hook_theme_suggestions_hook_alter () nicht dazu bringen, mit meiner benutzerdefinierten theme_suggestion/template zu arbeiten. Obwohl sich herausstellt, dass die Ansicht, die ich als Beispiel verwendet habe, auf andere Weise gelöst werden könnte, gibt es andere Fälle, in denen dies nicht der Fall ist.

3
Lauren G

Die Lösung gefunden. Wie sich herausstellt, spielt Drupal spielt nicht gut mit benutzerdefinierten Themenvorschlägen, die mit einem einzelnen Word + -Bindestrich beginnen.

Ich habe meine Funktion HOOK_theme_suggestions_HOOK_alter () so aktualisiert, dass sie $suggestions[] = 'test__template'; (Mit 2 Unterstrichen zwischen den Wörtern) enthält, und meinen Vorlagennamen auf test--template.html.twig Aktualisiert (mit 2 Strichen, um den 2 Unterstrichen zu entsprechen), und alles funktioniert wie erwartet.

6
Lauren G