J’utilise NextGen Gallery comme plugin la plupart du temps si je souhaite une galerie photo avec plusieurs albums.
J’ai installé le plugin, créé des albums, créé des galeries d’images… et là… ben le client me demande une page avec tous les albums qui mèneront aux galeries de ceux-ci, bref simplement afficher la liste des albums NextGen Gallery
Bref, étonné quand même que les développeurs de NextGen Gallery n’y ont pas pensé, je me suis fait une petite fonction qui va faire tout cela.

Comment afficher la liste des albums NextGen Gallery

Voici la fonction :

/* 
 * Affiche la lise des albums 
 * NE PAS OUBLIER DE CREER UNE PAGE PAR ALBUM
 */
function ngg_liste_albums( $args = null, $thumbs = 1) {

    global $wpdb;
    /* On va chercher le préfix utilisé */
    $prefix = $wpdb->prefix;
    $liste_albums = $wpdb->get_results( $wpdb->prepare( "SELECT previewpic, slug, name, albumdesc FROM ".$prefix."ngg_album ORDER by id", $o_id ) );
    //echo 'req : SELECT previewpic, slug, name FROM '.$prefix.'ngg_album ORDER by id';
    $output = '<div>';
    if ( count( $liste_albums ) > 0 ) {

        foreach ( $liste_albums as $albums ) {

            /* On va chercher l'image correspondante de l'album */
            $pic= $wpdb->get_row( $wpdb->prepare( "SELECT * FROM ".$prefix."ngg_pictures WHERE pid = ".$albums->previewpic." LIMIT 1", $o_id ) );
            /* On récupère le chemin vers l'album */
            $galerieid = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM ".$prefix."ngg_gallery WHERE gid = ".$pic->galleryid."", $o_id ) );

            if($galerieid->gid>=1) {
                $output .= '<div class="ngg-album-compact" style="float: left;width: 250px;">';
                if($thumbs==1 && isset($pic->filename)) {
                    $output .= '<div class="ngg-album-compactbox"><a class="Link" href="'.$path.''.$albums->slug.'/" /><img class="Thumb" alt="'.$albums->name.'" src="/'.$galerieid->path.'/thumbs/thumbs_'.$pic->filename.'" width="100" heigth="75" /></a></div>';
                }
                $output .= '<h4><a href="'.$path.''.$albums->slug.'/">'.$albums->name.'</a></h4>'.$albums->albumdesc.'';
                $output .= '</div>';
            }
        }

    } else {
        $output = 'Aucun album trouvé !';
    }
    $output .= '</div>';
    echo $output;
}

Modèle de page pour afficher la liste des albums NextGen Gallery

Puis j’ai créé un modèle de page à adapter selon votre thème :

<?php
/*
Template Name: Albums Photos
*/

get_header(); ?>

	<!-- CONTENT -->
	<div id="content">
		<section id="main-content" role="main" class="full-height">

			 <header class="entry-header">
                <h1 class="entry-title">Nos Galeries Photos</h1>
                </header>
            <div class="entry-content">
                <?php echo ngg_liste_albums(); ?>

			<?php
				// If comments are open or we have at least one comment, load up the comment template
				if ( comments_open() || '0' != get_comments_number() )
					comments_template( '', true );
			?>
            </div>
            <div class="divider-solid"/></div>
		</section>
	</div>
	<!-- END CONTENT -->

	<?php get_sidebar(); ?>

<?php get_footer(); ?>

Et ensuite ?

Il faut ensuite évidement penser à faire une page par album et le tour est joué !
Qu’en pensez-vous ? Pouvons-nous aussi simplifier cette fonction et ainsi l’améliorer ?
A vous de jouer !

Florent Maillefaud

Afficher la liste des albums NextGen Gallery pour WordPress 1Webmaster à Sablons (Isère) / Création de sites internet WordPress.

Micro-entrepreneur depuis 2012, je vous propose la création ou la refonte de votre site internet sous WordPress et à votre image.

Que ce soit un site vitrine, un blog ou un site e-commerce pour votre entreprise ou association, laissez votre empreinte sur le web !

Abonnez-vous

Restez en contact avec moi pour recevoir mes derniers articles concernant mon activité ou mes astuces pour WordPress.

Vos données ne seront jamais exploitées par un tiers. Vous avez aussi à chaque instant la possibilité de vous désabonner

diam felis suscipit tempus in odio eleifend accumsan leo. consequat. leo libero.
Share This