【问题标题】:Open Media Browser in specific folder October CSM builder plugin在特定文件夹中打开媒体浏览器十月 CSM 构建器插件
【发布时间】:2021-09-19 03:42:58
【问题描述】:

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

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

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

例如

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

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

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

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

谢谢

瓦茨拉夫

【问题讨论】:

标签: octobercms octobercms-plugins octobercms-backend octobercms-user-plugin octobercms-builder


【解决方案1】:

目前无法设置默认媒体查找器路径,此功能已在 GitHub 中请求但从未实现。 Issue link here.

编辑:跟进 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);
    }

    ...
}

【讨论】:

    【解决方案2】:

    您可以简单地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();
        }
    }
    

    当你是creating a record 时,这个sn-p 将让你打开media manager widget 位置为session-check/inner-level/

    如果你想编辑相同,只需添加 update action functioncreate function 相同的代码

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多