Eu tenho uma pergunta sobre como obter um caminho para uma imagem em um modelo Twig. A imagem não está atribuída a um campo ou algo assim. Apenas uma imagem estática que é armazenada em "MYTHEME / image / icon / my-icon.png".
No Drupal 7, recebo o caminho no meu node.template com o seguinte código:
<img src="<?php print base_path() . path_to_theme(); ?>/image/icons">/my-icon.png
Como isso funciona no Drupal 8? Eu tentei passar uma variável template_preprocess_node()
.
MYTHEME.theme:
$variables['images_path'] = \Drupal::theme()->getActiveTheme()->getPath() . '/image/';
Modelo de galho:
<img src="{{ images_path ~ 'icons/' ~ 'my-icon.png' }}">
Isso não funciona. Não há erro de PHP, mas o caminho é erroneamente considerado http: //localhost/node/themes/template/image/icons/my-icon.png .
drupal_get_path
é para D7 :)$themePath = Url::fromUserInput('/' . drupal_get_path('theme', '[themename]')
Respostas:
você pode usar o
{{ base_path ~ directory }}
que resolverá o problema absoluto, sem necessidade de pré-processamento; essas duas variáveis são incluídas pelo núcleo.Por exemplo
PS. o
~
ajudante em galho é concatenado.Editar: pelo menos na página * .html.twig templates a variável base_path está incluída, possivelmente você precisará fazer um pré-processamento para outros modelos, pode verificar facilmente
{{ dump() }}
se as variáveis estão presentesfonte
{{ directory }}
variável Twig em um tema que você pretende usar como tema base e crie subtemas para: drupal.stackexchange.com/questions/277278{{ base_bath }}
a todos os modelos; caso contrário, para alguns modelos, você terá que fazer o que Marcos Buarque fez no comentário acima ou Matoeil em drupal.stackexchange.com/a/238535/4195Por padrão, existe uma
{{ directory }}
variável que você pode usar que aponta para o diretório de temas. O problema é que não é absoluto, assim como o que você adicionou. Eu acho que isso é um bug no núcleo, porque deve incluir o caminho base, mas mudar isso naturalmente quebraria os sites existentes que o usam.Então você precisa adicionar um / na frente dele; isso seria interrompido se o Drupal estivesse instalado em uma subpasta. Você pode codificar isso no seu modelo ou continuar usando
base_path()
como no 7.x em uma variável personalizada.fonte
/sites/default/files/MyFolder
? Eu tenho uma imagem MyImage.jpg no MyFolder. Agora, no modelo de galho, se eu escrevi<img src={{ url }} alt={{ text }}>
Aqui, a variável url tem o caminho /MyFolder/MyImage.jpg, mas não está funcionando.<img src="/{{ directory }}/path/to/image"/>
para obter um caminho absoluto.trabalhou para mim quando
nao fiz
para o modelo de conteúdo, eu tive que usar no .module
e
fonte