it-swarm.com.de

So erhalten Sie eine Bild-URL aus einem Feld in einer Vorlage twig)

Ich habe einen Knoten, der verschiedene Felder enthält. Ich kann die Werte von Textfeldern abrufen, aber kein Bildfeld. Unten sehen Sie die relevante Ausgabe der Knotenvariablen, die in der Vorlage twig) ausgegeben wird:

 'field_main_image' => 
    object(Drupal\field\Entity\FieldConfig)[1312]
      protected 'deleted' => boolean false
      protected 'fieldStorage' => null
      protected 'id' => string 'node.homepage.field_main_image' (length=30)
      protected 'field_name' => string 'field_main_image' (length=16)
      protected 'field_type' => string 'image' (length=5)
      protected 'entity_type' => string 'node' (length=4)
      protected 'bundle' => string 'homepage' (length=8)
      protected 'label' => string 'Main image' (length=10)
      protected 'description' => string '' (length=0)
      protected 'settings' => 
        array (size=12)
          ...
      protected 'required' => boolean false
      protected 'translatable' => boolean false
      protected 'default_value' => 
        array (size=0)
          ...
      protected 'default_value_callback' => string '' (length=0)
      protected 'itemDefinition' => null
      protected 'constraints' => 
        array (size=0)
          ...
      protected 'originalId' => string 'node.homepage.field_main_image'     (length=30)
      protected 'status' => boolean true
      protected 'uuid' => string 'f40a7a65-18a5-4ced-85b0-ab1cdc41b2f5' (length=36)
      private 'isSyncing' (Drupal\Core\Config\Entity\ConfigEntityBase) => boolean false
      private 'isUninstalling' (Drupal\Core\Config\Entity\ConfigEntityBase) => boolean false
      protected 'langcode' => string 'en' (length=2)
      protected 'third_party_settings' => 
        array (size=0)
          ...
      protected '_core' => 
        array (size=0)
          ...
      protected 'trustedData' => boolean false
      protected 'entityTypeId' => string 'field_config' (length=12)
      protected 'enforceIsNew' => null
      protected 'typedData' => null
      protected 'cacheContexts' => 
        array (size=0)
          ...
      protected 'cacheTags' => 
        array (size=0)
          ...
      protected 'cacheMaxAge' => int -1
      protected '_serviceIds' => 
        array (size=0)
          ...
      protected 'dependencies' => 
        array (size=2)
          ...

Ich habe ähnliche Fragen zu SE gesehen, wie diese Abrufen der Bild-URL von einem field_image auf einem Knoten , aber keine der Antworten hat bei mir funktioniert.

Vielen Dank im Voraus für alle Antworten.

8
Adeleke Akinade

Ein Bildfeld speichert die Datei-ID in target_id. Sie können auf die Datei-ID zugreifen mit:

{{ node.field_main_image.target_id }}

Es gibt eine zweite Eigenschaft im Bildfeld. Es ist für die referenzierte Entität, in diesem Fall das Dateiobjekt. Dies ist in der Debug-Ausgabe nicht sichtbar, da es berechnet wird:

{{ node.field_main_image.entity }}

Im Dateiobjekt finden Sie das Feld uri

{{ node.field_main_image.entity.uri.value }}

hier können Sie die URL des Originalbilds abrufen

{{ file_url(node.field_main_image.entity.uri.value) }}

oder die URL eines Bildstils

{{ node.field_main_image.entity.uri.value | image_style('thumbnail') }}

Der Filter für den Bildstil ist Teil dieses Moduls, das Sie installieren müssen:

https://www.drupal.org/project/twig_Tweak

19
4k4

Sie können die Bild-URL nicht direkt in der Vorlage twig Vorlage, da Bildfelder nur die ID der Bilddatei haben. Jedes Bild in Drupal 8 ist eine Dateieinheit).

Sie können versuchen in template_preprocess_node():

$image_file_id = $variables['node']->field_image[0]->target_id;
$image_file = \Drupal\file\Entity\File::load($image_file_id);
$uri = $image_file->uri->value;
$variables['url']=file_create_url($uri);
6
Andrew Nim
<article{{ attributes.addClass(classes) }}>
<div>
    <img src="{{ file_url(node.field_image.entity.uri.value) }}">
</div>
<div{{ content_attributes.addClass('content') }}>
    {{ content|without('field_image') }}
</div>
  1. {{file_url (node.field_image.entity.uri.value)}}

Auf diese Weise können Sie das Bildfeld des Knotens in der Vorlage twig) abrufen.

  1. {{content | without ('field_image')}}

Auf diese Weise erhalten Sie den Inhalt ohne Knotenbildfeld.

1
Wasim Khan