it-swarm.com.de

Verwenden von nextGen Gallery .. Wie kann ich eine Liste aller Galerienamen aufrufen?

Ich versuche, eine Navigation zu erstellen, um auf alle verschiedenen Galerien auf einer einzigen Seite zuzugreifen.

Anstatt alle Namen hart zu kodieren. Ich war neugierig, ob es möglich ist, diese Dynamik zu erzeugen und einfach alle IDs aller Galerien abzurufen, mit vielleicht einem Ausschluss von den beiden, bei denen es sich um Diashows handelt.

Hat jemand neue Ideen?

3
Trip

Alle Ihre Galerien werden in einer Tabelle namens wp_ngg_gallery in Ihrer WordPress-Datenbank gespeichert. (Der Vollständigkeit halber: nextGen Gallery erstellt 2 weitere Tabellen für Alben bzw. Bilder)

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

ruft die IDs aller Galerien in einem Array ab, geordnet nach ID von 1 bis Ende. Nun zum Ausschließen der beiden Diashows (im Beispiel wird davon ausgegangen, dass ihre IDs 4 und 25 sind):

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

Was nützen die Ausweise ohne die Titel der Galerien? Wäre es nicht einfacher, nach Titel auszuschließen? Also das

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

sie erhalten eine Liste aller Nicht-Diashow-Galerien, die alphabetisch nach Galerietiteln sortiert sind. Sie können auch mit einem Platzhalter * anstelle von gid, title auswählen und dann alle Spalten aus der Galerietabelle abrufen, die gid, name, slug, path, title, galdesc, pageid, previewpic, author lauten.

Das resultierende Array ist offensichtlich bedeutungslos, es sei denn, Sie tun etwas damit, indem Sie es durchlaufen und eine Liste von Links erstellen.

Die Struktur des resultierenden Arrays ist:

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

Du hast die Idee.

BEARBEITEN: Erstellen einer Navigation aus der obigen Datenbankabfrage

Angenommen, Sie haben bereits Seiten für alle Galerien im Dialogfeld NextGen Gallery> Manage Gallery erstellt, wird im Folgenden eine einfache Navigation daraus erstellt. Die Spalten pageid und title müssen aus der Datenbank ausgewählt worden sein.

echo '<ul>';

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

echo '</ul>';

Lesen, falls es Sie interessiert:

6
Johannes Pille

Oder einfacher:

<?php

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

?>
6
jim

Wenn jemand ein Menü mit Galerien mit einem bestimmten Album auf einer bestimmten Seite hinzufügen muss, kann er meinen Code verwenden.

<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