【发布时间】:2017-07-21 09:11:41
【问题描述】:
使用 Silverstripe CMS (v3.4) 当我使用 tinymce 编辑器上传图像时,它会自动设置图像的宽度/高度。这会导致一些问题,例如破坏动画 gif 使其无法播放,并且还会降低静态图像的质量。
如何完全关闭此功能,以便在上传时不调整大小?
【问题讨论】:
标签: silverstripe
使用 Silverstripe CMS (v3.4) 当我使用 tinymce 编辑器上传图像时,它会自动设置图像的宽度/高度。这会导致一些问题,例如破坏动画 gif 使其无法播放,并且还会降低静态图像的质量。
如何完全关闭此功能,以便在上传时不调整大小?
【问题讨论】:
标签: silverstripe
HTMLEditorField 更新img 的saveInto 函数中的标签。 saveInto 函数内部是一个 processImage 扩展钩子,它允许我们操作使用 TinyMCE 插入的图像。
首先我们创建一个带有processImage 函数的CustomHTMLEditorField 扩展。如果图像是 gif,我们将 img src 设置回原始图像路径。
class CustomHTMLEditorField extends Extension
{
public function processImage($image, $img)
{
if ($image->getExtension() == 'gif') {
$img->setAttribute('src', $image->getRelativePath());
}
}
}
接下来,我们在config.yml 文件中将扩展名添加到HtmlEditorField:
HtmlEditorField:
extensions:
- CustomHTMLEditorField
【讨论】:
HtmlEditorField 代码 processImage 钩子不再存在,以及 HtmlEditorField saveInto 函数中的图像处理。看起来我们需要在 SilverStripe 4 中找到另一种方法。
您可以修改图像的插入宽度,而不是将它们调整为 600 像素宽。
mysite/_config.yml
HtmlEditorField:
insert_width:
1200
您还可以使用 css 覆盖图像标签上的宽度/高度属性。
.typography img {
width: 100%;
max-width: 100%;
height: auto;
}
它不是很好,但它是我所知道的唯一解决方法。
对于动画 gif,如果用 php 调整它们的大小,它们总是会损坏。
【讨论】:
不要在 TinyMCE 中添加图像……它不能正确支持高 dpi 图像,而且很难控制生成的布局。
最好使用内容块模块之类的东西,或者只使用单独的图像上传字段。您还可以使用 shortcodable 模块之类的东西通过自定义简码插入图像等媒体。
【讨论】: