web-dev-qa-db-fra.com

Twig: inclure du code externe à partir d'un fichier SVG

Est-il possible d'inclure le code d'un fichier svg directement dans un fichier de modèle de brindille?

Quelque chose comme:

{% include 'my.svg' %}

cela se traduira par:

<svg viewbox=".... />
10
Marten Zander
8
leSmooth

Avait un problème similaire, fini par renommer mes fichiers svgs en fichiers .twig.

{% include 'my.svg.twig' %}

7
LT86

Vous pouvez faire dans un thème Drupal8 en définissant une nouvelle variable:

function theme_preprocess_page(&$variables) {
  $svg = file_get_contents(drupal_get_path('theme', 'socialbase') . '/images/icons.svg');
  $variables['svg_Sprite'] = t('svg', array('svg' => $svg));
}

Dans votre fichier de brindilles, vous pouvez l’imprimer avec:

{{ svg_Sprite }}
1
MaikelKoopman

En cas de thème, il est judicieux d'utiliser la variable {{ directory }} qui contient le chemin d'accès au thème.

{{ source(directory ~ '/images/my.svg') }}
1
5n00py

Pour moi, cela a fonctionné:

{% include '/images/my.svg' %}

Juste une mise à jour rapide si vous utilisez Drupal 8 car le code de la réponse précédente ne fonctionnait pas pour moi. Voici comment je l'ai fait:

function theme_preprocess_page(&$variables) {
  $svg = file_get_contents(drupal_get_path('theme', 'theme_name') . '/images/my.svg');
  $variables['some_svg'] = $svg));
}

Et dans le fichier de brindille je l'ai sorti comme ceci:

{{ some_svg|raw }}
0
Aljoša