WordPress 3.5 медиа-менеджер - добавить мои собственные представления backbone.js
В настоящее время я пытаюсь использовать новый медиа-менеджер 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 ответ
Я не уверен, что вы когда-нибудь нашли ответ на свой вопрос, но я хотел, чтобы вы знали, что приведенный выше код работает для меня, просто исправляя ссылки на объекты "media", которые не имеют префикса "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: ?
}),
]);
Я лично хотел ЗАМЕНИТЬ исходное состояние по умолчанию для фрейма "выбор", чего я достиг, добавив states : 'mystate'
к параметрам file_frame, вызывая возврат инициализации без создания состояния выбора по умолчанию. А затем приступил к созданию "mystate", как вы продемонстрировали (с двумя незначительными изменениями в синтаксисе объекта).
Спасибо вам за лидерство в методологии здесь! Это сработало отлично, и я был полностью потерян и разочарован до этого.