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=".... />
Une façon de faire cela:
{{ source('my.svg') }}
Lire plus ici: https://www.theodo.fr/blog/2017/01/integrating-and-interacting-with-svg-image-files-using-twig/
Avait un problème similaire, fini par renommer mes fichiers svgs en fichiers .twig.
{% include 'my.svg.twig' %}
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 }}
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') }}
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 }}