为什么不能将另一个允许的文件扩展名添加到Drupal 7图像字段?


12

我为通过的图片上传添加了SVG文件扩展名,admin/structure/types/manage/image/fields/gallery_image如下所示:

在此处输入图片说明

但是当我上传图片时,仍然不允许上传SVG。

在此处输入图片说明

我肯定在管理页面上按了“保存”,然后清除了缓存,当我检查field_config_instance表时,甚至在数据库中看到了所需的设置。必须有其他未更新的表或缓存。任何想法?

Answers:


7

图像小部件在内部允许(和暗中实施发布的Drupal 6)仅使用的pnggifjpg和/或jpeg扩展。因此,尽管您可以从字段中删除扩展名,例如,gif为了避免产生动画效果,我已经从大多数实现中删除了扩展名,但是您无法在此列表中添加任何扩展名。我想这是因为它本身在上载后显示图像,并且不想破坏旧版IE浏览器中的实际显示形式(而且,他们也知道图像样式也可以在它们上工作:)


好的答案,可惜。
Joe Corneli 2013年

2
关于do的讨论在这里:drupal.org/node/1014816
Joe Corneli

2

您可以简单地使用文件字段,并hook_field_formatter_info_alter在您的自定义模块中实施以对文件字段也启用“图像”格式化程序。然后,您可以轻松输出上传的SVG作为嵌入式图像。

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

2

如前所述,没有简单的方法来简单地允许Drupal的核心Image模块接受SVG。相反,您可以使用贡献模块SVG Embed(在此讨论中为SVG在文件字段中勉强选择)或此沙盒(未正式发布)SVG模块

更新:我现在也建议在沙盒中使用svgimg,但可能很快就会发布。在生产中使用它,非常高兴。


1

解决它的另一种方法是使用Media模块。安装此文件后,可以在图像下的admin / structure / file-types中添加SVG格式。

如果我没记错的话,由于向后兼容性问题(主要是IE8和更低版本),Drupal默认仍不允许SVG。不过,我已经将SVG放置在项目上已有一段时间了,但尚未听到任何投诉。


不确定这是否是正确的方法,但是媒体绝对是解决此问题的方法。
digitgopher 2015年

为了记录,我创建了一个新的类型,称为SVG,这是自定义输出并允许您为图像提供不同输出的好方法
shaneonabike
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.