web-dev-qa-db-ja.com

ビューのブロックの行の総数を取得する方法

hook_block_view_alter()では、このブロックが表示する行の総数を取得する必要があります。

たとえば、次のブロックを持つビューがあります。

enter image description here

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が含まれます。 enter image description here

これが現在のビューのオブジェクトです: enter image description here

行の総数を取得できないのはなぜですか?多分私は間違ったフックを使用していますか?

3
Vladislav

使う views_view_フック、つまりviews_view_unformattedviews_view_listなど...私はこれをPHP自分のビューブロックのカウントで試してみましたが、うまくいきました。

enter image description here

私の機能は:

function MYTHEME_preprocess_views_view_unformatted(&$vars) {
  $num_rows = $vars["rows"];
  $count = count($num_rows);
  echo '<h2>This view has ' . $count . ' rows</h2><br>';
}

これにより、ビューの行数がわかりました。

印刷された、私は見る:

enter image description here

2
Danny Englander

フックは必要ありません。

ビューテンプレートに{{ view.total_rows }}を追加します。たとえば、views-view.html.twigで十分です。

1
Matoeil