wordpress 3.5媒体管理器 - 添加我自己的backbone.js视图

时间:2013-02-03 17:08:25

标签: wordpress backbone.js backbone-views wordpress-3.5

我目前正在尝试使用新的WordPress 3.5媒体管理器,它使用backbone.js来创建和填充其模态窗口。

我想要做的是:用户点击上传按钮,弹出媒体管理器,用户选择图像,按插入,图像然后保存到自定义字段。

所有这些都已经有效,我唯一想改变的是填充媒体上传者的侧边栏(用户可以使用我自己的模板添加标题,标题,选择大小等)。

我已经阅读过几十篇关于如何使用骨干的教程,但现在有点卡住了。这是我到目前为止的一些代码:

//defined earlier:
var frame;

//on click:

if ( file_frame )
{
    file_frame.open();
    return;
}
else
{
    // Create the media frame.
    file_frame  = wp.media(
    {
    frame:   'select',
    state:   'mystate',
    library:   {type: 'image'},
    multiple:   false
    });

    file_frame.states.add([

    new media.controller.Library({
        id:         'mystate',
        title: 'my title',
        priority:   20,
        toolbar:    'select',
        filterable: 'uploaded',
        library:    media.query( file_frame.options.library ),
        multiple:   file_frame.options.multiple ? 'reset' : false,
        editable:   true,
        displayUserSettings: false,
        displaySettings: true,
        allowLocalEdits: true,
          //AttachmentView: ?

    }),
    ]);

file_frame.open();

}

我也尝试过注册我自己的模板:

media.view.Attachment.mySidebar = media.view.Settings.AttachmentDisplay.extend(
{
    className: 'attachment-display-settings',
    template:  media.template('avia-choose-size')
});

但问题是:我不知道只加载此模板而不是原始侧边栏。将它作为AttachmentView参数传递显然不起作用,因为它取代了整个模板,而不仅仅是侧边栏。

任何有一些backbone.js经验的人可以提供帮助吗?

1 个答案:

答案 0 :(得分:2)

我不确定你是否曾找到过你的问题的答案,但我想通过简单地修复对“媒体”对象的引用来获取上述代码来为我工作,这些对象没有前缀“ WP“。所以...你的新自定义状态代码应该是这样的:

file_frame.states.add([

new wp.media.controller.Library({
    id:         'mystate',
    title: 'my title',
    priority:   20,
    toolbar:    'select',
    filterable: 'uploaded',
    library:    wp.media.query( file_frame.options.library ),
    multiple:   file_frame.options.multiple ? 'reset' : false,
    editable:   true,
    displayUserSettings: false,
    displaySettings: true,
    allowLocalEdits: true,
      //AttachmentView: ?

}),
]);

我个人想要REPLACE'select'帧的初始默认状态,我通过将states : 'mystate'添加到file_frame选项来实现,导致初始化返回而不创建默认的'select'状态。然后继续创建'mystate',如您所示(对象语法中的两个小变化)。

我要感谢你们在方法学方面的领先优势!它工作得很好,之前我完全迷失了,感到沮丧。