Neos\ContentRepository\Domain\Service\Context::getNodeVariantsByIdentifier PHP Method

getNodeVariantsByIdentifier() public method

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.
public getNodeVariantsByIdentifier ( string $identifier ) : array<\Neos\ContentRepository\Domain\Model\NodeInterface>
$identifier string The identifier of a node
return array<\Neos\ContentRepository\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;
    }

Usage Example

 /**
  * {@inheritdoc}
  */
 public function getOtherNodeVariants()
 {
     return array_filter($this->context->getNodeVariantsByIdentifier($this->getIdentifier()), function ($node) {
         return $node->getNodeData() !== $this->nodeData;
     });
 }