web-dev-qa-db-ja.com

ブロックがキャッシュされるのを防ぐ方法は?

ログイン後。サイドバーブロックを1つ追加します。キャッシュをクリアすると、変数またはその値のみが更新されます。

namespace Drupal\test_demo\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 * Provides 'Sidebar' Block
 *
 * @Block(
 *   id = "sidebar_block",
 *   admin_label = @Translation("Sidebar Block"),
 *   category = @Translation("Sidebar Block"),
 * )
 */

class SidebarBlock extends BlockBase {
  public function build() {
    return [
      '#markup' => $this->t('Sidebar'),
      '#cache' => [
            'max-age' => 0,
          ]
      ];
  }
}

mytheme.theme

function theme_preprocess_block(array &$variables) {
  echo $variables['elements']['#id'];
}

キャッシュされるブロックを停止するにはどうすればよいですか。したがって、ページを更新したら、すぐに値をロードします。

8
Mike

https://stefvanlooveren.me/blog/disable-block-caching-drupal-8 からソリューションを入手しました

以下の関数をブロックに追加します

https://stefvanlooveren.me/blog/disable-block-caching-drupal-8

public function getCacheMaxAge() {
    return 0;
}

https://www.drupal.org/docs/8/api/cache-api/cache-max-age

21
Mike

ビューのブロックの詳細オプションでキャッシュをなしに切り替えるだけです

0
user3608756