print_media_templates wird im Media Manager-Plugin nicht angewendet

7

Ich versuche, eine Medienbibliothek zu erstellen, in der Benutzer Bilder auswählen können, die aus benutzerdefinierten Ordnern abgerufen werden, deren Basisordner sie angeben können. Ich erhalte die richtigen Bilder zurück, aber die angegebene Vorlage wird nicht auf die Miniaturansichten angewendet. Die Beschriftung wird gefunden (siehe Seitenleiste, wenn img ausgewählt ist).

Bilder aus dem Ordner 2013_accs

Anstatt die gewünschte Vorlage anzuwenden, heißt es

<div class="filename"><div></div></div>

Geben Sie hier die Bildbeschreibung ein

Ich brauche nicht einmal eine benutzerdefinierte Vorlage. Ich würde mich freuen, wenn das Bild wie in der Standardbibliothek angezeigt wird, aber ich kann anscheinend nicht das richtige Ergebnis erzielen.

In der Datei media-folder-management.js habe ich dies

var MfmView = Backbone.View.extend({
    tagName: "li",
    className: "mfmimage attachment",
    template: wp.media.template('mfmimage'),
    render: function(){
        this.$el.html(this.template(this.model.toJSON()));
        return this;
    }
});

Und in media-folder-management.php gibt es

public function print_media_templates() {
    if(!$_POST['id']){
        $this->printInit();
    }

    ?>

    <script type="text/html" id="tmpl-mfmimage">
        <p class="test"></p>

        <img id="{{ data.id }}" class="<# if ( typeof(data.folder) !== 'undefined' ) { #>folder<# } else { #>image<# } #>" src="{{ data.thumbnail }}" alt="{{ data.caption }}" title="{{ data.caption }}" data-full="{{ data.full }}" data-link="{{ data.link }}" />
        <# if ( typeof(data.folder) !== 'undefined' ) { #>
        <p>{{ data.caption }}</p>
        <# } #>
        <a class="check" id="check-link-{{ data.id }}" href="#" title="Deselect"><div id="check-{{ data.id }}" class="media-modal-icon"></div></a>

    </script>

    <?php

}

Ziel ist es, die WP-Funktionalität beizubehalten (ausgewähltes Bild, Galerie erstellen, in Seite / Beitrag einfügen), jedoch mit einer strukturierteren Ordnerstruktur (da der Kunde bereits über eine vollständige Bildbibliotheksstruktur verfügt).

Die nächsten Schritte wären:

  • Wenn eine Datei in das Fenster gezogen wird, muss sie in einen geöffneten Ordner hochgeladen werden
  • Ordner erstellen / löschen (mit Berechtigungen entsprechend den Benutzerrollen)
  • ziehe img in einen anderen Ordner (optional)

Ich hoffe, jemand kann mir helfen, dieses Problem zu lösen. Ich bin mit Backbone.js noch nicht sehr vertraut.

Vielen Dank im Voraus!

Anneke
quelle
Für den Fall, dass sich jemand über das if (! $ _ POST ['id']) wundert {$ this-> printInit (); } in den print_media_templates habe ich es jetzt entfernt, so dass dies nicht verhindern kann, dass die Vorlage richtig abgerufen wird ...
Anneke

Antworten:

1

Ok, ich habe inzwischen einige Dinge herausgefunden: Ich habe das gerenderte Bild in nichts zurückgegeben

Im Javascript habe ich eine Renderfunktion

media.view.AttachmentsBrowser = media.view.AttachmentsBrowser.extend({
        render: function(){
            var that = this;
            if(this.collection){
                if(this.collection.models.length > 0){
                    this.clearImages();
                    _.each(this.collection.models, function (item){
                        //old way: that.renderImage(item);
                        //now:
                        this.$el.find('#lastli').before(that.renderImage(item));
                    }, this);
                }
            }
        }
});

Offensichtlich zeigten meine Bilder nicht ...

Da ich aber keine Vorlage brauche, habe ich diesen Code entfernt, sodass die Standard-tmpl verwendet wird.

Meine Suche geht zwar weiter, im Moment habe ich Probleme beim Ausfüllen des in der Medienvorlage verwendeten Datenobjekts, aber ich werde eine weitere Frage dazu stellen, da es sich um ein anderes Problem handelt. Bei Interesse finden Sie hier die Frage: Anhang Medienmodell-Datenmodell (data.size.url)

Anneke
quelle