Usando a nextGen Gallery .. como posso chamar uma lista de todos os nomes das galerias?

3

Estou tentando fazer um nav para acessar todas as diferentes galerias em uma única página.

Em vez de codificar todos os seus nomes. Eu estava curioso para saber se era possível fazer essa dinâmica e apenas ligar para todas as IDs de todas as galerias, talvez com uma exclusão das duas que são apresentações de slides.

Alguém tem alguma ideia nova?

    
por Trip 18.11.2011 / 01:30

3 respostas

6

Todas as suas Galerias estão armazenadas em uma tabela chamada wp_ngg_gallery em seu banco de dados wordpress. (Para completar: o nextGen Gallery cria mais 2 tabelas para álbuns e fotos, respectivamente)

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

busca os IDs de todas as galerias em uma matriz, ordenada por ID de 1 até o final. Agora, para excluir os dois que são slideshows (o exemplo assumirá que seus IDs são 4 e 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);

Quais são os IDs sem os títulos das galerias? Além disso, não seria mais fácil excluir pelo título? Então isso

$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);

daria a você uma matriz de todas as galerias de slides não ordenadas em ordem alfabética por título da galeria. Você também pode selecionar com um curinga * em vez de gid, title , então você obterá todas as colunas da tabela de galeria, que são gid, nome, slug, caminho, título, galdesc, pageid, previewpic, autor .

A matriz resultante é obviamente sem sentido, a menos que você faça alguma coisa com ela, como iterar sobre ela e criar uma lista de links.

A estrutura da matriz resultante é:

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

Você tem a ideia.

EDIT: Criando uma navegação a partir da consulta de banco de dados acima

Supondo que você já tenha criado páginas para todas as galerias de dentro da Galeria NextGen > Na caixa de diálogo Gerenciar Galeria , o seguinte criará uma navegação simples a partir dele. As colunas pageid e title devem ter sido selecionadas no banco de dados.

echo '<ul>';

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

echo '</ul>';

Leitura, caso você se importe:

por Johannes Pille 18.11.2011 / 02:00
6

Ou mais simplesmente:

<?php

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

?>
    
por jim 14.07.2012 / 23:37
0

Se alguém precisar adicionar um menu de galerias usando um determinado álbum em uma determinada página, poderá usar meu código.

<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>
    
por Alex 20.07.2012 / 09:31