You are here

class TemplateProcessor in YAML Content 8.2

A content processor plugin supporting content templates in defined content.

A content preprocessor to support more controlled generation of sample content through the inclusion of reusable templates.

Plugin annotation


@ImportProcessor(
  id = "template_processor",
  label = @Translation("Template processor"),
  context = {
    "template" = @ContextDefinition("string", label = @Translation("Content template")),
    "count" = @ContextDefinition("integer",
      label = @Translation("Count"),
      description = @Translation("The number of times to include the template.")
    ),
    "module" = @ContextDefinition("string",
      label = @Translation("Template module"),
      description = @Translation("The module containing the template file.")
    )
  }
)

Hierarchy

Expanded class hierarchy of TemplateProcessor

File

src/Plugin/YamlContent/TemplateProcessor.php, line 29

Namespace

Drupal\yaml_content\Plugin\YamlContent
View source
class TemplateProcessor extends ImportProcessorBase {

  /**
   * The serialization service used to parse content files.
   *
   * @var \Drupal\Component\Serialization\Yaml
   */
  protected $decoder;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->decoder = \Drupal::service('serialization.yaml');
  }

  /**
   * {@inheritdoc}
   */
  public function preprocess(array &$import_data) {
    $template_data = $this
      ->loadTemplate();
    $count = $this
      ->getContextValue('count');

    // Populate the template the designated number of times.
    for ($i = 0; $i < $count; $i++) {

      // Add another iteration of the template.
      $import_data[] = $template_data;
    }
  }

  /**
   * Load the template designated through context values.
   *
   * @return mixed
   *   The loaded template structure.
   */
  protected function loadTemplate() {
    $context = $this
      ->getContextValues();
    $template_path = drupal_get_path('module', $context['module']) . '/content';
    $template_name = $context['template'] . '.template.yml';

    // @todo Handle failure to load file.
    $template_data = $this->decoder
      ->decode(file_get_contents($template_path . '/' . $template_name));
    return $template_data;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ContextAwarePluginBase::$context protected property The data objects representing the context of this plugin.
ContextAwarePluginBase::$contexts Deprecated private property Data objects representing the contexts passed in the plugin configuration.
ContextAwarePluginBase::contextHandler protected function Wraps the context handler.
ContextAwarePluginBase::createContextFromConfiguration protected function Overrides ContextAwarePluginBase::createContextFromConfiguration
ContextAwarePluginBase::getCacheContexts public function The cache contexts associated with this object. Overrides CacheableDependencyInterface::getCacheContexts 9
ContextAwarePluginBase::getCacheMaxAge public function The maximum age for which this object may be cached. Overrides CacheableDependencyInterface::getCacheMaxAge 7
ContextAwarePluginBase::getCacheTags public function The cache tags associated with this object. Overrides CacheableDependencyInterface::getCacheTags 4
ContextAwarePluginBase::getContext public function This code is identical to the Component in order to pick up a different Context class. Overrides ContextAwarePluginBase::getContext
ContextAwarePluginBase::getContextDefinition public function Overrides ContextAwarePluginBase::getContextDefinition
ContextAwarePluginBase::getContextDefinitions public function Overrides ContextAwarePluginBase::getContextDefinitions
ContextAwarePluginBase::getContextMapping public function Gets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface::getContextMapping
ContextAwarePluginBase::getContexts public function Gets the defined contexts. Overrides ContextAwarePluginInterface::getContexts
ContextAwarePluginBase::getContextValue public function Gets the value for a defined context. Overrides ContextAwarePluginInterface::getContextValue
ContextAwarePluginBase::getContextValues public function Gets the values for all defined contexts. Overrides ContextAwarePluginInterface::getContextValues
ContextAwarePluginBase::setContext public function Set a context on this plugin. Overrides ContextAwarePluginBase::setContext
ContextAwarePluginBase::setContextMapping public function Sets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface::setContextMapping
ContextAwarePluginBase::setContextValue public function Sets the value for a defined context. Overrides ContextAwarePluginBase::setContextValue
ContextAwarePluginBase::validateContexts public function Validates the set values for the defined contexts. Overrides ContextAwarePluginInterface::validateContexts
ContextAwarePluginBase::__get public function Implements magic __get() method.
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
ImportProcessorBase::$import public property Indicate that this plugin supports import operations.
ImportProcessorBase::postprocess public function Post-process imported content after it has been instantiated. Overrides ImportProcessorInterface::postprocess 1
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TemplateProcessor::$decoder protected property The serialization service used to parse content files.
TemplateProcessor::loadTemplate protected function Load the template designated through context values.
TemplateProcessor::preprocess public function Pre-process import data and manipulate it prior to content creation. Overrides ImportProcessorBase::preprocess
TemplateProcessor::__construct public function Overrides \Drupal\Component\Plugin\PluginBase::__construct(). Overrides ContextAwarePluginBase::__construct
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 2
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 2