web-dev-qa-db-fra.com

Comment puis-je implémenter une fonction Ajouter à la collection sur ma galerie d'images pour la télécharger plus tard?

Je construis une galerie d'images WordPress comme une galerie de photos pour un usage interne. J'utilise Media Gallery pour télécharger des fichiers, puis j'utilise la galerie d'images pour afficher les photos. Tout fonctionne bien avec quatre options de téléchargement que vous pouvez choisir.

Le problème que je rencontre est que je souhaite collecter ces images en un clic pour pouvoir les conserver, puis les télécharger au format Zip. Cela simplifiera la vie des utilisateurs au lieu de télécharger des photos individuelles.

C'est un peu comme istock ou shutterstock Ajouter à la fonctionnalité Lightbox .

J'ai vu un plugin qui se ferme à ce que je veux. Ça s'appelle, Ajouter aux favoris. Mais il vous donne juste une liste de titres dans un widget.

Je ne veux pas que les utilisateurs s'enregistrent sur le site. Il suffit donc de cookies pour que les collections se réinitialisent à chaque fermeture du navigateur.

J'ai creusé dans le stockage local HTML5 et le cookie JQuery, mais cela me semble un peu hardcore.

J'ai aussi pensé à un plugin pour le panier d'achat, mais je n'ai pas besoin du paiement Paypal ni d'aucun autre paiement, car je veux simplement que les gens collectent et téléchargent facilement.

Y a-t-il un moyen de faire ça? Existe-t-il une sorte de plugin que je puisse utiliser?

1
vanduzled

Je voudrais sauter les cookies et utiliser le script génial store.js

Envoyez simplement un attribut data-lightbox sur le lien "Ajouter à la visionneuse" avec l'ID d'image et (si vous utilisez jQuery), rien de plus simple:

$( document.body ).on( "click", "a[data-lightbox]",
    function ( ev ) {
        ev.preventDefault();
        var id = $( this ).data( "lightbox" ), list = store.get( "lightbox" );
        if ( list ) {
            if ( $.inArray( id, list ) === -1 )
                list.Push( id );    
        } else {
            list = [ id ];
        }

        store.set( "lightbox", list );
    }
);

Et pour télécharger, il suffit de traiter la liste et de la rediriger vers votre gestionnaire côté serveur:

$( ".download" ).click(
    function ( ev ) {
        ev.preventDefault();
        var list = store.get( "lightbox" );
        if ( list ) {
            var href = window.location.href,
                args = ( href.indexOf( "?" ) !== -1 ? "&" : "?" ) + "download=" + list.join( "," );

            window.location = href + args;
        }
    }
);

J'ai supposé que votre gestionnaire acceptait une liste d'identifiants séparés par des virgules dans $_GET['download'] pour une URL donnée.

1
TheDeadMedic