/** * Get all node variants for the given identifier * * A variant of a node can have different dimension values and path (for non-aggregate nodes). * The resulting node instances might belong to a different context. * * @param string $identifier The identifier of a node * @return array<\TYPO3\TYPO3CR\Domain\Model\NodeInterface> */ public function getNodeVariantsByIdentifier($identifier) { $nodeVariants = array(); $nodeDataElements = $this->nodeDataRepository->findByIdentifierWithoutReduce($identifier, $this->getWorkspace()); /** @var NodeData $nodeData */ foreach ($nodeDataElements as $nodeData) { $contextProperties = $this->getProperties(); $contextProperties['dimensions'] = $nodeData->getDimensionValues(); unset($contextProperties['targetDimensions']); $adjustedContext = $this->contextFactory->create($contextProperties); $nodeVariant = $this->nodeFactory->createFromNodeData($nodeData, $adjustedContext); $nodeVariants[] = $nodeVariant; } return $nodeVariants; }