使用下一代画廊..我如何调用所有画廊名称的列表?

时间:2011-11-18 作者:Trip

我正在尝试制作导航,以便在一个页面上访问所有不同的图库。

而不是把他们的名字都硬编码出来。我很好奇,是否有可能让这个动态化,只需调用所有画廊的所有ID,也许可以排除幻灯片上的两个ID。

有人有什么新想法吗?

3 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

所有库都存储在一个名为wp_ngg_gallery 在wordpress数据库中。(为了完整性:nextGen Gallery分别为相册和图片创建了另外两个表格)

$gallery_ids = $wpdb->get_results(
    "SELECT gid FROM ".$wpdb->prefix."ngg_gallery ORDER BY gid ASC", ARRAY_A);
将所有库的ID提取到一个数组中,按ID从1到末尾排序。现在排除两个幻灯片(示例将假定其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, 然后,您将从gallery表中获得所有列,它们是gid、name、slug、path、title、galdesc、pageid、previewpic、author。

结果数组显然毫无意义,除非您对其进行一些操作,例如对其进行迭代并创建链接列表。

结果数组的结构为:

Array
(
    [0] => Array
        (
            [\'gid\'] => 4
            [\'title\'] => \'playing_football\'
        )
    [1] => Array
        (
            [\'gid\'] => 8
            [\'title\'] => \'vacation_pics\'
        )
)
你明白了。

EDIT: Creating a navigation from the above database query

假设您已经从“下一个库>管理库”对话框中为所有库创建了页面,下面将从中创建一个简单的导航。必须从数据库中选择pageid和title列。

echo \'<ul>\';

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

echo \'</ul>\';
阅读,以防万一:

SO网友:jim

Or more simply:

<?php

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

?>
SO网友:Alex

如果任何人需要在特定页面上添加使用特定相册的库菜单,可以使用我的代码。

<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>

结束

相关推荐

无法使用多个元关键字按日期/时间对wp_Query进行排序

4th EDIT 11/17/2011我说得太快了。现在我有了所有的帖子,但在我移动了endif之后,总事件数并没有按天将事件分开;和endwhile;我把修改过的代码贴在下面,下面是以前修改过的代码。之前,每天的计数都是正确的。如果我周五有两个来自不同帖子的事件,那么它会说“周五有两个事件”,但它只会显示最近帖子的内容。现在它显示了所有帖子的内容,但如果我周五有两个来自不同帖子的事件,那么在每个帖子之前都会显示“1个事件周五”。这是代码,谢谢你。<?php $today = d