2

我正在为网站使用 NextGen 画廊 WordPress 插件。在我的 gallery.php 模板中,我想检索循环中显示的每个画廊的图像数量。我想不出一种方法来获取数据并在gallery.php中调用的每个画廊的缩略图下打印它

这是我要插入图库图像计数并打印的位置:

<a rel="prettyPhoto" href="<?php echo $image->imageURL ?>" 
<?php $image->thumbcode ?>><span>view</span></a> <?php echo $total_images; ?> pictures

有人有任何提示吗?

谢谢,伊恩

4

4 回答 4

1

我使用这个小技巧从我粘贴在帖子中的短代码([nggallery=1])中获取我的画廊 ID

<?php
    $id = get_the_ID();//Get the id of the specific post (inside the loop)
    $string = get_the_content();//You get the whole post content where in the end of it lies your shortcode (for example [nggallery=1])
    if(preg_match_all('/=(.*?)\]/s',$string,$match)) {            
    $finalstring=$match[1][0];
    }// get the id only (gets all chars after '=' and before ']')
    global $wpdb;
    $total_attachments = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures WHERE galleryid=$finalstring" ); // Voila!
?>
于 2014-01-21T19:09:37.280 回答
0

答案是你不能。您可以计算 $images 变量中的键,但它会返回错误的数字。您可以检索所有图像的总数,或所有无用的画廊。您甚至可以在遍历数组时使用计数器来尝试计算图库中有多少图像,但您仍然会得到错误的数字。您可以尝试在默认情况下使用全局变量:images->total,它们是空的且未定义的,甚至不存在于 $images 或 $current 对象中。

代码显示(“图片 3 of 7)”类型的显示。如果你在 imagebrowser.php 模板中使用它,它就可以工作。如果您将完全相同的代码粘贴到 gallery-carousel.php 模板中。不起作用。现在您可能会认为切换到 $current->total 会起作用,因为在使用 gallery_carousel 时它会莫名其妙地对其余变量起作用,但不,它不会。答案是您必须直接从数据库中提取信息。

 <?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of',      'nggallery')?> <?php echo $image->total ?>

这是一个险恶的,险恶的插件。

于 2013-01-01T03:23:26.627 回答
0

希望我的解决方案对你有用。

这是计算图像所需的代码:

$global $wpdb;
$images    = intval( $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggpictures") );
$galleries = intval( $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggallery") );
$albums    = intval( $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->nggalbum") );
于 2012-11-17T04:58:49.560 回答
0

如果您无法计算图库上的图像,则可以计算 html 块上的标签。

在我的主题上,我从自定义字段中获取图库 ID,并在模板中回显图库。所以,它是这样的:

<?php
    $myGalleryId = 1; // example
    $displayImages = 0; // the number of images you want to display from gallery. 0 = all images 
    $newnggShortcodes = new NextGEN_Shortcodes;
    $htmlGallery = str_get_html($newnggShortcodes->show_gallery( array("id"=>$myGalleryId,"images"=>$displayImages,"template"=>"popular") ));
    $countImg = count($htmlGallery->find('img')); // number of total <img> tags inside the gallery
    $str = $htmlGallery;
?>
<!-- now the html -->
<div id="myGallery">
<?php echo $str; ?>
</div>
<span>Total images: <?php echo $countImg; ?></span>

希望能帮助到你。

于 2013-03-14T18:58:45.590 回答