web-dev-qa-db-fra.com

Pourquoi ne puis-je pas ajouter une autre extension de fichier autorisée à un champ d'image Drupal 7?

J'ai ajouté l'extension de fichier SVG pour les téléchargements d'images via admin/structure/types/manage/image/fields/gallery_image, Comme vous le voyez ci-dessous:

enter image description here

Mais quand je vais télécharger une image, je ne suis toujours pas autorisé à télécharger SVG.

enter image description here

J'ai définitivement appuyé sur "Enregistrer" dans la page d'administration, et j'ai vidé le cache, et je vois même les paramètres comme je les voulais dans la base de données, lorsque j'inspecte la table field_config_instance. Il doit y avoir une autre table ou cache qui ne se met pas à jour. Une idée?

12
Joe Corneli

Le widget Image autorise en interne (et applique silencieusement la publication Drupal 6) l'utilisation uniquement des png, gif, jpg et/ou jpeg extensions. Ainsi, bien que vous puissiez supprimer une extension d'un champ, par exemple, j'ai supprimé gif de la plupart de mes implémentations pour éviter tout ce qui est animé, vous ne pouvez pas en ajouter à cette liste . J'imagine que c'est parce qu'il affiche en soi l'image après avoir été téléchargée et ne veut pas casser les affichages dans les anciens navigateurs IE sous la forme réelle (plus, qui sait comment les styles d'image travaillerait aussi sur eux :)

7
Jimajamma

Vous pouvez simplement utiliser un champ de fichier et implémenter hook_field_formatter_info_alter dans votre module personnalisé pour activer le formateur "Image" également pour les champs de fichier. Ensuite, vous pouvez facilement sortir le fichier SVG téléchargé en tant qu'image intégrée.

/**
 * Implements hook_field_formatter_info_alter().
 */
function MODULNAME_field_formatter_info_alter(&$info) {
  $info['image']['field types'][] = 'file';
}
2
yannickoo

Comme indiqué, il n'y a pas de moyen facile de simplement autoriser le module d'image de base de Drupal à accepter SVG. Au lieu de cela, vous pouvez utiliser le module contribué SVG Embed (choisi à contrecœur sur un champ de fichier pour SVG dans cette discussion ) ou ceci sandbox (non officiellement publié) module SVG .

MISE À JOUR: Je recommande maintenant svgimg également dans Sandbox mais devrait être publié bientôt. L'utiliser en production, et très heureux.

2
mlncn

Il existe également une autre solution: utiliser le module Media . Une fois celui-ci installé, le format SVG peut être ajouté dans admin/structure/types de fichiers, sous image.

Si je ne me trompe pas, Drupal n'autorise toujours pas les SVG par défaut en raison de problèmes de compatibilité ascendante (principalement IE8 et inférieurs). Je place des SVG depuis un certain temps sur des projets, cependant et n'ont pas encore entendu de plainte.

1
karolus