it-swarm-ko.tech

노드의 field_image에서 이미지 URL 가져 오기

그래서 나는이 노드를 가지고 있습니다 :

object(Drupal\node\Entity\Node)[1862]
  protected 'values' => 
    array (size=17)
      'vid' => 
        array (size=1)
          'x-default' => string '7' (length=1)
      'langcode' => 
        array (size=1)
          'x-default' => 
            array (size=1)
              0 => 
                array (size=1)
                  'value' => string 'en' (length=2)
      ... (more fields)
      'field_image' => 
        array (size=1)
          'x-default' => 
            array (size=1)
              0 => 
                array (size=5)
                  'target_id' => string '1' (length=1)
                  'alt' => string '' (length=0)
                  'title' => string '' (length=0)
                  'width' => string '150' (length=3)
                  'height' => string '120' (length=3)

이제 field_image에는 x-default 및 일부 기본 이미지 데이터가있는 배열이 있습니다. Twig 템플릿 내에서 이미지를 표시하거나 이미지에 대한 링크를 만들려면 어떻게합니까?

44
Rias

8.0.x 이후이 답변의 업데이트 버전은 다음과 같습니다. @ joelpittet 주석에 기초합니다.

{{ file_url(node.field_image.entity.fileuri) }}
52
itsdarrylnorris

Twig에 대해서는 모르겠지만 PHP에서 $node->field_image->entity->getFileUri() 파일 URI를 얻으면 file_create_url()을 호출해야합니다.

file_create_url($node->field_image->entity->getFileUri())

나뭇 가지에서 가능한지 모르겠습니다. 가능하지 않은 경우 항상 사전 프로세스에서 계산하여 새 변수로 추가 할 수 있습니다.

39
Berdir

누군가 스타일 이미지가 필요한 경우 :

$styled_image_url = ImageStyle::load('large')->buildUrl($node->field_image->entity->getFileUri());
27
VladimirM

위의 어느 것도 twig 솔루션은 효과가 없었습니다.

{{ file_url(node.field_image['#items'].entity.uri.value) }}

참고 : Drupal 8.5 +

11
GiorgosK

그래서 Clive 의 도움으로 답을 찾았습니다.

Twig에서 이미지 URI 가져 오기는 node.field_image.0.entity.uri.value를 사용하여 수행됩니다!)

file_create_url(node.field_image.0.entity.uri.value)을 사용하여 이미지의 전체 URL을 가져올 수 있습니다.

Twig에서 이것을 수행하는 것은 아직 불가능하지만 작업 중입니다.-> 여기 참조

7
Rias

D8에서 나를 위해 일한 것은 다음과 같습니다.

$imageUrl = $node->get('field_image')->entity->uri->value;

kint($node->get('field_image')->entity)을 사용하고 배열을 살펴 보는 것이 매우 도움이되었습니다.

enter image description here

그런 다음 내 twig 파일에서 다음을 사용했습니다.

<img class="top-article-image" src="{{ file_url(imageUrl) }}" />
6
crobicha

twig 템플릿의 모든 이미지 필드에 대해 연결된 이미지 스타일로 이미지 URL을 가져 오려는 경우의 방법입니다.

먼저 Twig Tweak 모듈 을 설치하십시오.

그런 다음 이미지 URI를 변수로 설정하십시오. URI를 사용하면 twig tweaks 패턴을 사용하여 원하는 이미지 스타일의 경로를 얻을 수 있습니다. 아래를 참조하십시오.

{% set image_uri = content.field_feature_row_image['#items'].entity.uri.value %}

<img src="{{ image_uri|image_style('image1200x1103') }}"/>

Twig Tweak v2.4 +는 file_url 엔터티에서 파일 URL을 추출하는 필터입니다.

<img src="{{ node.field_image|file_url|image_style('image1200x1103') }}"/>
3
Robb Davis

field_image.entity.url을 사용하여 직접 URL을 얻을 수 있습니다

2
Adrian Kremer

나는 항상 도우미 기능을 사용하고 있습니다.

  /**
   * Get the Image URI.
   *
   * @param \Drupal\Core\Entity\Entity $entity
   * @param $fieldName
   * @param bool $imageStyle
   * @return mixed
   */
  public function getImageUri(\Drupal\Core\Entity\Entity $entity, $fieldName, $imageStyle = FALSE) {
    $imageField = $entity->get($fieldName)->getValue();
    if (!empty($imageField[0]['target_id'])) {
      $file = File::load($imageField[0]['target_id']);
      if ($imageStyle) {
        return ImageStyle::load($imageStyle)->buildUrl($file->getFileUri());
      }

      // Original URI.
      return file_create_url($file->getFileUri());
    }
  }
2
hugronaphor

File 클래스에있는 url() 메소드를 바로 가기로 사용할 수 있습니다.

{{ file_url(node.field_image.entity.fileuri) }}

단축 할 수 있습니다 :

{{ node.field_image.entity.url }}

이것은 전처리 기능에서 작동하지만 Twig_Sandbox_SecurityError twig 템플릿에서 호출 된 경우).

Twig_Sandbox_SecurityError이 = Stackoverflow post 에서 언급 한 것처럼 settings.php 파일에서 url를 허용하도록 twig

File :: Url () https://api.drupal.org/api/drupal/core%21modules%21file%21src%21Entity%21File.php/function/File%3A%3Aurl/8.6에 대한 설명서를 참조하십시오. .x

0
Kiee

URI, alt, title 등의 이미지 속성을 얻으려면 템플릿과 같은 구문을 현명하게 사용하십시오

노드에서 twig 템플릿

{{node.field_name.entity.fileuri}}

필드에서 twig 템플릿

{{content.field_name.entity.fileuri}}

다른 필드에서 twig 템플릿

{{element['#object'].field_name.entity.fileuri}}

참고 : 또한 twig_tweaks 모듈 치트 시트 twig 관련 문제.

0
Prem Patel

나는 같은 문제가 있었기 때문에 get_image_path() Twig 함수를 만들고 다른 유용한 것들을 내 상용구 스타터 모듈에 추가했습니다.

https://github.com/brynj-digital/starter

이 함수는 이미지 필드와 이미지 스타일의 컴퓨터 이름을 받아 들인 다음 해당 이미지 경로를 반환합니다.

그것은 많은 맥락에서 작동합니다-node.field_name, content.field_name 또는 row._entity.field_name (보기 필드 템플릿의 경우).

0
user34185

다소 관련이 있다면, 여기에 미디어 엔티티의 이미지 필드에서 이미지 파일 URL을 가져 오기 위해 내가 사용한 모든 이전 답변 덕분입니다.

{% set media_img_url = file_url(content.field_media_image.0['#item'].entity.uri.value) %}

이제이 변수를 내 twig 템플릿에서 사용할 수 있습니다

{{ media_img_url }}
0
bdanin

어쨌든 결과 URL이 작동하지 않는 이유를 알아내는 데 실제로 오랜 시간이 걸렸습니다. 모두 404입니다. 파생이없는 경우 먼저 파생을 작성해야합니다.

예를 들어 나중에 이미지 스타일을 추가 할 때 원본 이미지가 업로드 된 후에는 스타일이 지정된 이미지 파일이 없습니다 (이미지 파생). 먼저 작성해야합니다.

field_MYIMAGEMYSTYLE 필요에 따라.

$original_image = $node->field_MYIMAGE->entity->getFileUri();
$style = \Drupal::entityTypeManager()->getStorage('image_style')->load('MYSTYLE');

$destination = $style->buildUri($original_image);
if (!file_exists($destination)) {
  $style->createDerivative($original_image, $destination);
}

$url = $style->buildUrl($original_image);

나는 이것이 자동으로 일어나기를 바란다.

0
leymannx