9

私は現在、backbone.jsを使用してモーダルウィンドウを作成および設定する新しいWordPress3.5メディアマネージャーを利用しようとしています。

私がやりたいのは、ユーザーがアップロードボタンをクリックし、メディアマネージャーがポップアップし、ユーザーが画像を選択し、挿入を押して、画像がカスタムフィールドに保存されることです。

これらはすべてすでに機能しています。変更したいのは、メディアアップローダーのサイドバー(ユーザーがキャプション、タイトル、サイズの選択などを追加できる)に独自のテンプレートを入力することだけです。

バックボーンの操作方法に関するチュートリアルをすでに数十回読んでいますが、今は少し行き詰まっています。これが私のこれまでのコードの一部です:

//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の経験を持っている人はいますか?

4

1 に答える 1

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: ?

}),
]);

私は個人的に、「選択」フレームの初期のデフォルト状態を置き換えたいと思っていました。これはstates : 'mystate'、file_frame オプションに追加することで達成され、デフォルトの「選択」状態を作成せずに初期化が返されました。そして、あなたが示したように「mystate」の作成に進みました(オブジェクト構文に2つの小さな変更があります)。

ここで方法論をリードしてくれてありがとう!それは完全に機能し、以前は完全に迷ってイライラしていました。

于 2013-07-19T20:41:27.700 に答える