silverstripe / tinymce - 停止自动调整大小

silverstripe / tinymce - stop automatic resize

当我使用 tinymce 编辑器上传图像时,使用 Silverstripe CMS (v3.4) 它会自动在图像上设置 width/height。这会导致一些问题,例如破坏动画 gif 使其无法播放,还会降低静态图像的质量。

如何完全关闭此功能,以便在上传时不调整大小?

不要在 TinyMCE 中添加图像……它不能正确支持 hi-dpi 图像,而且很难控制生成的布局。

最好使用内容块模块之类的东西,或者只使用单独的图像上传字段。您还可以使用 shortcodable 模块之类的东西通过自定义短代码插入图像等媒体。

您可以修改图片的插入宽度,而不是将它们调整为 600 像素宽。

mysite/_config.yml

HtmlEditorField:
  insert_width:
    1200

您还可以使用 css 覆盖图片标签上的宽度/高度属性。

.typography img {
  width: 100%;
  max-width: 100%;
  height: auto;
}

它不是很好,但它是我所知道的唯一解决方法。

至于动画 gif,如果使用 php 调整大小,它们总是会损坏。

HTMLEditorField 在其 saveInto 函数中更新 img 标签。 saveInto 函数内部是一个 processImage 扩展挂钩,它允许我们操作使用 TinyMCE 插入的图像。

首先我们创建一个带有 processImage 功能的 CustomHTMLEditorField 扩展。如果图像是 gif,我们将 img src 设置回原始图像路径。

银色条纹 3

class CustomHTMLEditorField extends Extension
{
    public function processImage($image, $img)
    {
        if ($image->getExtension() == 'gif') {
            $img->setAttribute('src', $image->getRelativePath());
        }
    }
}

接下来我们将扩展名添加到 config.yml 文件中的 HtmlEditorField

HtmlEditorField:
  extensions:
    - CustomHTMLEditorField