Code Snippets : 計算Views生成資料的總數

Views用來「列資料」很棒,可是如果要做一些統計、計算,雖然有些模組可以用(像是Views Cul等等),但其實都不是很好的解決方案。不過Views的API非常齊全,所以只要了解Views的寫法,也是可以不需要自己寫query喔!

以下範例是算出某個Views的total rows,也就是該Views的總數。
實際應用舉例:
獎金獵人的「目前進行中比賽有XXX件」這樣的區塊。

<?php
$view = views_get_view( 'VIEWS_NAME' );
$view->get_total_rows = TRUE;
$view->execute();
$count = $view->total_rows;

print '目前進行中比賽有' . $count . 'XXX件';
?>

如果你的狀況需要設參數的話:

<?php
$view = views_get_view( 'VIEWS_NAME' );
$view->set_arguments( array( 1, 2, 3 ) ); //參數設在這
$view->get_total_rows = TRUE;
$view->execute();
$count = $view->total_rows;

print $count;
?>

如果希望最後輸出可以依照總數改變的話:

<?php
$view = views_get_view( 'VIEWS_NAME' );
$view->set_arguments( array( 1, 2, 3 ) ); //參數設在這
$view->get_total_rows = TRUE;
$view->execute();
$count = $view->total_rows;
if ($count > 0) {
$output = format_plural($count,
'只有 1 個',
'總共有 @count 個');
print $output;
}
?>