it-swarm.com.de

Wie kann verhindert werden, dass ein Block zwischengespeichert wird?

Nach dem Login. Ich füge einen Seitenleistenblock hinzu. Sobald ich den Cache geleert habe, wird nur die Variable oder ihr Wert aktualisiert.

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,
          ]
      ];
  }
}

In mytheme.theme

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

Wie kann ich verhindern, dass dieser Block zwischengespeichert wird? Also einmal aktualisiere ich die Seite. Der Wert wird sofort geladen.

8
Mike

Erhielt die Lösung über https://stefvanlooveren.me/blog/disable-block-caching-drupal-8

Fügen Sie Ihrem Block die folgende Funktion hinzu

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

Sie können das Caching in den erweiterten Optionen des Ansichtsblocks einfach auf Keine ändern

0
user3608756