programing

wordpress 3.5 미디어 매니저 - backbone.displays 뷰를 추가합니다.

elecom 2023. 3. 14. 21:24
반응형

wordpress 3.5 미디어 매니저 - backbone.displays 뷰를 추가합니다.

현재 backbone.js를 사용하여 모달 창을 만들고 채우는 새로운 WordPress 3.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 경험이 있는 사람이라면 누가 도울 수 있을까요?

질문에 대한 답을 찾을 수 있을지는 모르겠지만, 위 코드는 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: ?

}),
]);

저는 개인적으로 'select' 프레임의 초기 기본 상태를 바꾸고 싶었습니다.states : 'mystate'file_frame 옵션을 지정하면 기본 'select' 상태가 생성되지 않고 초기화가 반환됩니다.그런 다음 시연대로 'mystate' 작성을 진행합니다(개체 구문의 두 가지 사소한 변경 사항).

방법론을 선도해 주셔서 감사합니다!완벽하게 작동했고, 전에는 완전히 길을 잃고 좌절했어요.

언급URL : https://stackoverflow.com/questions/14674948/wordpress-3-5-media-manager-add-my-own-backbone-js-views

반응형