Então, graças ao 4k4 , finalmente consegui obter meu URI da imagem original em um modelo de campo via
item.content['#item'].entity.uri.value
e com
{{ file_url(item.content['#item'].entity.uri.value) }}
Eu receberia o URL do arquivo original.
Eu tenho as informações do estilo de imagem via
item.content['#item']['#image-style']
que 'médio' é solicitado
Uma solução PHP já está disponível aqui , mas como faço isso no TWIG?
Existem algumas tentativas de criar um filtro para 8.1 aqui - mas isso não me ajuda atualmente.
Respostas:
Você pode colocar o código php na função de pré-processamento do modelo de campo. Você tem todas as informações necessárias na sua pergunta.
Mas então você faria codificação, que já está em drupal. Se você tiver # estilo de imagem definido no elemento de renderização de imagem, o campo de imagem deverá ser configurado para as funções de pré-processo que vêm posteriormente nos modelos de formatador de imagem e de estilo de imagem para colocar o atributo src correto nas variáveis de
image-style.html.twig
. Portanto, você pode usar o código que já está lá, substituindo este modelo.Veja o código em /core/module/image/image.module:
fonte
<img>
estilo inline. Atualmente, eu obtenho a imagem correta com estilo como um<img>
caminho de arquivo original ou muito grande para usar em uma conexão que não seja de banda larga - por isso, só quero obter o caminho para a amostra com baixa amostragem. E não quero substituir todas as renderizações de imagem, apenas um campo. Claro que eu poderia armar o caminho para o estilo, já que conheço o nome do arquivo original - mas isso seria ruim.Eu só precisava fazer isso também. A abordagem correta aqui é armazenar o URL da imagem estilizada em uma variável (através de uma função de pré-processo) e, em seguida, essa variável estará disponível no seu arquivo twig.
Eu escrevi uma função que obterá qualquer arquivo field_image e retornará o nome do arquivo original ou, se você especificar um nome de estilo, ele retornará o URL da imagem com estilo.
Dentro do meu
.theme
arquivo:Agora, no meu arquivo twig (node.html.twig, desde que usei a função preprocess_node):
Essa função
_var_image_url()
precisa ser chamada a partir daTHEME_preprocess_node()
função, pois está esperando uma certa configuração no primeiro$vars
argumento. Se você tentar chamá-lopreprocess_page
, precisará modificá-lo.fonte