a12s-1.0.0-beta7/modules/layout/src/DisplayOptions/DisplayTemplatePluginBase.php

modules/layout/src/DisplayOptions/DisplayTemplatePluginBase.php
<?php

namespace Drupal\a12s_layout\DisplayOptions;

use Drupal\a12s_layout\Entity\DisplayOptionsInstanceInterface;
use Drupal\Component\Plugin\PluginBase as BasePlugin;

/**
 * Base class for display template plugins.
 */
abstract class DisplayTemplatePluginBase extends BasePlugin implements DisplayTemplatePluginInterface {

  /**
   * The related Display Options instance.
   *
   * @var \Drupal\a12s_layout\Entity\DisplayOptionsInstanceInterface|null|false
   */
  protected DisplayOptionsInstanceInterface|false|null $doInstance;

  /**
   * {@inheritDoc}
   */
  public function label(): string {
    // Cast the label to a string since it is a TranslatableMarkup object.
    return (string) $this->pluginDefinition['label'];
  }

  /**
   * Get the Display Options instance for the given layout.
   *
   * @return \Drupal\a12s_layout\Entity\DisplayOptionsInstanceInterface|null
   *   The Display Options instance or NULL.
   */
  public function getDisplayOptionsInstance(): ?DisplayOptionsInstanceInterface {
    if (!isset($this->doInstance)) {
      /** @var \Drupal\a12s_layout\Entity\DisplayOptionsInstanceInterface[] $doInstances */
      $doInstances = $this->thDisplayOptionsStorage->loadByProperties(['plugin' => $this->getPluginId()]);
      // We can only have one instance per plugin.
      $this->doInstance = reset($doInstances);
    }

    return $this->doInstance ?: NULL;
  }

  /**
   * {@inheritDoc}
   */
  public function executeTemplatePreprocessing(string $name, array $displayOptions, array &$variables): void {
    foreach ($this->getOptionsSets() as $optionsSetId => $optionsSet) {
      if ($optionsSet->appliesToTemplate($name)) {
        $optionsSet->preprocessVariables($variables, $displayOptions[$optionsSetId] ?? []);
      }
    }
  }

  /**
   * {@inheritDoc}
   */
  public function calculateDependencies(): array {
    return [];
  }

}

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

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