0

嗨,我正在寻找一些想法如何做到这一点

在我自己的模块(文章/画廊/轮播...)中创建于 10 月 CMS Builder 插件,使用归档类型 mediafinder 获取图像和文档。

我需要在我的插件中打开后端媒体浏览器 - 直接在用户定义的文件夹中?

例如

文件夹中的文章:/storage/app/media/articles

文件夹中的画廊:/storage/app/media/gallery,或更好的 /storage/app/media/gallery/id(如果 id 画廊存在 - 如果不存在则创建子文件夹)

文件夹中的轮播:/storage/app/media/carousel

我不需要任何限制 - 如果需要,用户可以直接从媒体浏览器更改文件夹。但必须在插件中定义的子文件夹中打开。

谢谢你

瓦茨拉夫

4

2 回答 2

0

目前无法设置默认媒体查找器路径,此功能在 GitHub 中请求但从未实现。问题链接在这里

编辑:跟进 Hardik 的评论,这实际上是添加媒体管理器/查找器路径的一个非常好的解决方法。

您可以修改控制器的创建/更新方法以在会话中包含路径。我将包含一个更新方法的示例,因为他提供的链接具有创建链接。

您还可以使用MediaLibrary API 来检查文件夹并在需要时为您的画廊创建一个新文件夹。特别是 folderExists(string $path) 和 makeFolder(string $path) 方法

class Articles extends Controller
{
    use \Backend\Traits\SessionMaker;

    ...
    public function getId($suffix = NULL) {
        return 'MediaFinder-formMedia-media';
    }

    public function update($recordId, $context = null) {
        // Add path on the second argument
        $this->putSession('media_folder', '/articles');
        return $this->asExtension('FormController')->update($recordId, $context);
    }

    ...
}
于 2021-07-09T22:02:44.257 回答
0

您可以简单add a small code snippetyour controller控制在哪个位置打开media manager widget

参考:https ://tutorialmeta.com/october-cms/set-custom-path-october-cms-media-manager-widget

class Movies extends Controller
{
    use \Backend\Traits\SessionMaker;
    // ... other code

    // this is to write session to media widget session
    public function getId($suffix = NULL) {
        return 'MediaManager-ocmediamanager';
    }

    public function create() {
        $this->putSession('media_folder', '/session-check/inner-level/');
        // put your path here -------------- ^
        return $this->asExtension('FormController')->create();
    }
}

此代码段可让您media manager widget在.session-check/inner-level/creating a record

如果您想要与编辑相同,只需添加update action function与相同的代码create function

如果您有任何疑问,请发表评论。

于 2021-07-18T19:35:28.723 回答