Drupal 8:关闭特定视图的块缓存

时间:2017-06-29 22:17:50

标签: caching drupal drupal-8

我想知道如何为视图创建的所有块关闭块缓存。如果可能的话,我想从我的主题中做到这一点。我的初步研究表明,使用hook_block_view_BASE_BLOCK_ID_alter()可能能够实现这一目标。

我想关闭缓存的视图的机器名称为 background_image 。我的主题名为 my_theme 。我在my_theme.theme中尝试了这个但是没有用:

/*
 * Implements hook_block_view_BASE_BLOCK_ID_alter().
 */
function my_theme_block_view_background_image_alter(array &$build, \Drupal\Core\Block\BlockPluginInterface $block) { 
  $build['#cache']['max-age'] = 0;
}

我也试过使用回调:

/*
 * Implements hook_block_view_BASE_BLOCK_ID_alter().
 */
function my_theme_block_view_background_image_alter(array &$build, BlockPluginInterface $block) {
  $build['#pre_render'][] = '_background_image_block_pre_render';
}

/**
 * Pre-render callback
 */
function _background_image_block_pre_render(array $build) {
  $build = array(
    '#cache' => array('max-age' => 0),
  );
  return $build;
}

提前致谢。

2 个答案:

答案 0 :(得分:2)

我发现我能够在Views UI中关闭视图的块缓存。它属于高级版。把它关掉那里解决了我的问题

答案 1 :(得分:0)

在Drupal 8中,为特定视图禁用缓存

您的视图>高级>缓存>无