I'm trying to load a view X times but with a different contextual filter value each time. My code generates the correct amount of view blocks, but they are all the exact same. They all correspond to the first value passed. Here's my code (in hook_preprocess_node) :

  if ($node->getType() == 'parent'){
    $parent= $node->field_datas_taxonomy->getValue()[0]['target_id'];
    $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadChildren($parent);
    foreach($terms as $term){
      $pname = $term->get('name')->value;
      $tid =  $term->get('tid')->value;
      $args = [$tid];
      $view = \Drupal\views\Views::getView('vue_datas');
      if (is_object($view)) {
        $content = $view->buildRenderable('block_a', $args);
        $variables['view_datas'][] = $content;

If this issue is tied to a contextual filters restriction, I'm ok with using a filter instead, I just don't know how.

Any advice? Thanks.

  • This may be related to this question, although I'm not sure. I'm struggling with something similar, where I'm rendering the same view several times, with different displays and arguments. In each case, only the first values are used for each subsequent block.
    – Steve
    Commented Apr 21, 2022 at 20:11


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.