我目前正在尝试使用新的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经验的人可以提供帮助吗?
答案 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',如您所示(对象语法中的两个小变化)。
我要感谢你们在方法学方面的领先优势!它工作得很好,之前我完全迷失了,感到沮丧。