whitelabel-8.x-2.x-dev/src/WhiteLabelBlockAlter.php

src/WhiteLabelBlockAlter.php
<?php

namespace Drupal\whitelabel;

use Drupal\Core\Cache\CacheableMetadata;
use Drupal\Core\Render\Element\RenderCallbackInterface;

/**
 * Provides a trusted callback to alter the system branding block.
 *
 * @see whitelabel_block_view_alter()
 */
class WhiteLabelBlockAlter implements RenderCallbackInterface {

  /**
   * Pre-render callback: Sets white label cacheability metadata on blocks.
   *
   * Scans all blocks to see if they depend on the system.site cache tag. If so,
   * also make them depend on the white label cache tag and cache context to
   * make sure we can cache one block for every white label.
   */
  public static function preRender($build) {
    $cacheable_metadata = CacheableMetadata::createFromRenderArray($build);

    // Add cacheable data for blocks depending on config:system.site cache tags.
    $tags = $cacheable_metadata->getCacheTags();
    if (in_array('config:system.site', $tags)) {

      // Always create a cache context for the no-whitelabel version.
      $cacheable_metadata->addCacheContexts(['whitelabel']);

      if ($whitelabel = \Drupal::service('whitelabel.whitelabel_provider')->getWhiteLabel()) {
        // Add white label specific cacheability metadata.
        $cacheable_metadata->addCacheableDependency($whitelabel);
      }

      // Add cacheable metadata.
      $cacheable_metadata->applyTo($build);
    }

    return $build;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc