hook_block_view_alter()
では、このブロックが表示する行の総数を取得する必要があります。
たとえば、次のブロックを持つビューがあります。
hook_block_view_alter()
では、不要なブロックを取り除き、上の図に示すブロックを取得するために、適切なチェックを行います。
function mymodule_block_view_alter(array &$build, \Drupal\Core\Block\BlockPluginInterface $block) {
if (!preg_match('~^views_block:taxonomy_tag_list~', $block->getPluginId())) {
return;
}
$view = $block->getViewExecutable();
// Gets the number of rows
$totalRows = $view->get_total_rows;
}
しかし、何らかの理由で、$totalRows
にはNULL
が含まれます。
行の総数を取得できないのはなぜですか?多分私は間違ったフックを使用していますか?
使う views_view_
フック、つまりviews_view_unformatted
、views_view_list
など...私はこれをPHP自分のビューブロックのカウントで試してみましたが、うまくいきました。
私の機能は:
function MYTHEME_preprocess_views_view_unformatted(&$vars) {
$num_rows = $vars["rows"];
$count = count($num_rows);
echo '<h2>This view has ' . $count . ' rows</h2><br>';
}
これにより、ビューの行数がわかりました。
印刷された、私は見る:
フックは必要ありません。
ビューテンプレートに{{ view.total_rows }}
を追加します。たとえば、views-view.html.twig
で十分です。