自定义缩略图CKFinder 3,自定义文件类型

问题描述

我有自定义文件类型,或者不支持缩略图文件类型,因为 ckfinder 仅支持图像类型。

所以 file:getThumb 只在图像文件类型上被调用

finder.on('file:getThumb',function (evt) {
    evt.stop();
    Object.assign(evt.data.templateData,evt.data);
    evt.data.template = `http://example.com/images/{{= it.url }}`;
});

解决方法

事实证明,您需要进行一些修补才能实现这一点。

需要 CKFinder/Modules/Files/Views/ThumbnailsView/FileRenderer 并修补返回的模板字符串以强制所有文件类型具有缩略图。

CKFinder.define(
    ['backbone','marionette','doT','CKFinder/Modules/Files/Views/ThumbnailsView/FileRenderer'],CKFinderPlugin
);
function CKFinderPlugin(Backbone,Marionette,doT,fileRenderer) {
    fileRenderer.prototype.preRenderOrigin = fileRenderer.prototype.preRender;
    fileRenderer.prototype.preRender = function () {
        var args = Array.from(arguments);
        var response = fileRenderer.prototype.preRenderOrigin.apply(this,args);
        return response.replace('ckf-file-icon','ckf-lazy-thumb');
    };

    return {
        init(finder) {},lib: [Backbone,fileRenderer],};
}