it-swarm.com.de

Wie füge ich eine Variable für eine Twig - Vorlage in meiner Vorverarbeitungsfunktion hinzu?

Ich verwende den folgenden Code, um die Variablen für meine Vorlage vorzuverarbeiten:

function template_preprocess_imagegallery_format(&$vars) {
  template_preprocess_image_formatter($vars);
  $vars['image']['#theme'] = 'igimage';
  $vars['image']['#thumbnail'] = ImageStyle::load('thumbnail')->buildUrl($vars ['image']['#uri']);
  $vars['image']['#fullimage'] = file_create_url($vars ['image']['#uri']);
}

Die Variable #uri ist bereits vorhanden, und wenn ich sie nur ändere, funktioniert alles einwandfrei. Aber ich muss hier zusätzliche Variablen hinzufügen, da ich zwei verschiedene Stile desselben Bildes benötige. Das einfache Hinzufügen dieser Variablen zum Array funktioniert jedoch nicht.

Wenn ich die verfügbaren Variablen in meiner Vorlage Twig mit {{ dump(_context|keys) }} speichere, werden die dort hinzugefügten Variablen nicht angezeigt. Wenn ich versuche, sie in meiner Vorlage zu verwenden, nichts wird eingefügt.

Ich kann sehen, dass die Werte dem Array hinzugefügt werden. Wenn ich die Bildvariable in dem Thema speichere, das das gesamte Feld rendert, werden meine Variablen im Array angezeigt. Sie sind jedoch immer noch nicht in der Vorlage verfügbar, mit der die Bildvariable selbst gerendert wird.

Was muss ich noch tun, um meiner Vorverarbeitungsfunktion eine Variable hinzuzufügen, die ich in meiner Vorlage Twig) verwenden kann?

10
Mad Scientist

Ich habe das Problem endlich gelöst. Es stellte sich heraus, dass ich versucht habe, die Variablen im falschen Präprozessor hinzuzufügen. Das Bearbeiten des #theme funktioniert dort, aber um Variablen hinzuzufügen, musste ich das dort festgelegte Thema vorverarbeiten:

function template_preprocess_imagegallery_format(&$vars) {
  template_preprocess_image_formatter($vars);
  $vars['image']['#theme'] = 'igimage';
}

function template_preprocess_igimage(&$vars) {
    $vars['thumbnail'] = ImageStyle::load('thumbnail')->buildUrl($vars['uri']);
    $vars['fullimage'] = file_create_url($vars['uri']);
}
8
Mad Scientist

Themenname: atvdirect

  • erstellen Sie neben atvdirect.info.yml eine Datei atvdirect.theme im Stammverzeichnis Ihres Themas
  • fügen Sie den folgenden Code in die Datei atvdirect.theme ein
  • verwenden Sie {{logopath}} in page.html.twig

    <?php
    function atvdirect_preprocess_page(&$variables) {
      $variables['logopath'] = '/'.drupal_get_path('theme','atvdirect') .'/logo.png';
    }
    ?>
    
4
gurcharan