web-dev-qa-db-ja.com

NextGen Galleryを使う..すべてのGallery名のリストを呼び出すにはどうすればいいですか?

私は単一のページ上のすべての異なるギャラリーにアクセスするためのナビゲーションを作成しようとしています。

すべての名前をハードコーディングする代わりに。これをダイナミックにして、すべてのギャラリーのすべてのIDを呼び出すことができれば、私は興味がありました。

誰もが新鮮なアイデアを得ましたか?

3
Trip

あなたのすべてのギャラリーはあなたのワードプレスデータベースのwp_ngg_galleryと呼ばれるテーブルに保存されます。 (完全を期すために、nextGen Galleryはアルバムと写真用にそれぞれ2つのテーブルを作成します)

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

すべてのギャラリーのIDを1から最後までのID順に配列にフェッチします。スライドショーである2つを除外します(例では、IDが4と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);

ギャラリーのタイトルが表示されていないIDは何が良いのでしょうか。また、タイトルで除外する方が簡単ではないでしょうか。したがって、この

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

ギャラリーのタイトルのアルファベット順に並べられた、スライドショー以外のすべてのギャラリーの配列が表示されます。 *の代わりにワイルドカードgid, titleを選択すると、ギャラリテーブルからすべての列(gid、名前、スラッグ、パス、タイトル、galdesc、pageid、previewpic、author)を取得できます。

結果の配列は、それを繰り返し処理してリンクのリストを作成するなど、何もしない限り、明らかに無意味です。

結果の配列の構造は次のとおりです。

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

あなたはアイデアを得ます。

編集:上記のデータベースクエリからナビゲーションを作成する

NextGenギャラリー>ギャラリーの管理ダイアログ内からすべてのギャラリーのページを既に作成していると仮定すると、以下から簡単なナビゲーションが作成されます。 pageidおよびtitle列は、データベースから選択されている必要があります。

echo '<ul>';

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

echo '</ul>';

気になる場合は読んでください:

6
Johannes Pille

もっと簡単に言うと:

<?php

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

?>
6
jim

特定のページの特定のアルバムを使用してギャラリーのメニューを追加する必要がある場合は、私のコードを使用できます。

<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