web-dev-qa-db-fra.com

Comment utiliser nextGen Gallery? Comment appeler une liste de tous les noms de galeries?

J'essaie de faire un nav pour accéder à toutes les différentes galeries sur une seule page.

Au lieu de coder en dur tous leurs noms. J'étais curieux de savoir s'il était possible de créer cette dynamique et d'appeler simplement toutes les cartes d'identité de toutes les galeries, avec peut-être une exclusion sur les deux qui sont des diaporamas.

Quelqu'un a de nouvelles idées?

3
Trip

Toutes vos galeries sont stockées dans une table appelée wp_ngg_gallery dans votre base de données wordpress. (Par souci d'exhaustivité: la galerie nextGen crée 2 tables supplémentaires pour les albums et les images, respectivement)

$gallery_ids = $wpdb->get_results(
    "SELECT gid FROM ".$wpdb->prefix."ngg_gallery ORDER BY gid ASC", ARRAY_A);

récupère les identifiants de toutes les galeries dans un tableau, classés par identifiant de 1 à la fin. Maintenant, pour exclure les deux diaporamas (l'exemple suppose que leurs identifiants sont 4 et 25):

$gallery_ids = $wpdb->get_results(
    "SELECT gid
     FROM ".$wpdb->prefix."ngg_gallery
     WHERE gid NOT IN (4, 25)
     ORDER BY gid ASC", ARRAY_A);

A quoi servent les identifiants sans les titres des galeries? En outre, ne serait-il pas plus facile d'exclure par titre? Donc ça

$galleries = $wpdb->get_results(
    "SELECT gid, title
     FROM ".$wpdb->prefix."ngg_gallery
     WHERE title NOT IN (slideshow_1, slideshow_2)
     ORDER BY title ASC", ARRAY_A);

vous donnerait un tableau de toutes les galeries sans diaporama triées alphabétiquement par titre. Vous pouvez également sélectionner avec un caractère générique * au lieu de gid, title, puis vous obtiendrez toutes les colonnes de la table gallery, qui sont gid, nom, slug, chemin, titre, galdesc, pageid, previewpic, auteur.

Le tableau résultant est évidemment dépourvu de sens, sauf si vous faites quelque chose avec lui, par exemple en le parcourant et en créant une liste de liens.

La structure du tableau résultant est la suivante:

Array
(
    [0] => Array
        (
            ['gid'] => 4
            ['title'] => 'playing_football'
        )
    [1] => Array
        (
            ['gid'] => 8
            ['title'] => 'vacation_pics'
        )
)

Vous avez eu l'idée.

EDIT: Créer une navigation à partir de la requête de base de données ci-dessus

En supposant que vous ayez déjà créé des pages pour toutes les galeries à partir de la boîte de dialogue Galerie NextGen> Gérer la galerie, les opérations suivantes créeront une navigation simple à partir de celle-ci. Les colonnes pageid _ et title doivent avoir été sélectionnées dans la base de données.

echo '<ul>';

foreach ( $galleries as $gallery ) {
    echo '<li><a href="' .
         get_bloginfo( 'url' ) .
         '/?p=' .
         $gallery['pageid'] .
         '">' .
         $gallery['title'] .
         '</a></li>';
}

echo '</ul>';

En lisant, au cas où vous l'aimeriez

6
Johannes Pille

Ou plus simplement:

<?php

global $nggdb;
$galleries = $nggdb->find_all_galleries();
print_r($galleries);

?>
6
jim

Si quelqu'un a besoin d'ajouter un menu de galeries utilisant un certain album sur une certaine page, mon code peut être utilisé.

<div id="gallery_menu">
        <?php

            // hardcoded part
            if(is_page(12)){
                $album_id = 2;
                $page_id = 12;
            }elseif(is_page(14)){
                $album_id = 3;
                $page_id = 14;
            }elseif(is_page(16)){
                $album_id = 4;
                $page_id = 16;
            }else{
                $album_id = 2;
                $page_id = 12;
            }

            // get the needed albums gallery id's
            $query = "SELECT sortorder FROM wp_ngg_album WHERE id=".(int)$album_id;
            $result = mysql_query($query) or die(mysql_error());
            while($row = mysql_fetch_array($result)){
                if($row['sortorder']){
                    $tmp = unserialize($row['sortorder']);
                }
            }

            // get gallery titles according to id's we got
            $query_titles = "SELECT title, gid FROM wp_ngg_gallery WHERE gid IN(";
            for($i=0; $i < count($tmp); $i++){
                if($i != (count($tmp)-1)){
                    $query_titles .= (int)$tmp[$i].", ";
                }elseif($i == (count($tmp)-1)){
                    $query_titles .= (int)$tmp[$i].")";
                }
            }

            // query and show titles with links
            $result_titles = mysql_query($query_titles) or die(mysql_error());
            echo '<ul class="gallery_titles">';
                while($row_titles = mysql_fetch_array($result_titles)){
                    echo '<li><a href="'.get_bloginfo('siteurl').'/?p='.$page_id.'&album='.$album_id.'&gallery='.$row_titles['gid'].'">'.$row_titles['title'].'</a></li>';
                }
            echo '</ul>';

        ?>
    </div>
0
Alex