|
@@ -0,0 +1,50 @@
|
|
|
+<?php
|
|
|
+namespace Drupal\materio_home\Plugin\Field\FieldType;
|
|
|
+
|
|
|
+use Drupal\Core\Entity\FieldableEntityInterface;
|
|
|
+use Drupal\Core\Field\EntityReferenceFieldItemList;
|
|
|
+use Drupal\Core\Field\EntityReferenceFieldItemListInterface;
|
|
|
+use Drupal\Core\Field\FieldItemList;
|
|
|
+use Drupal\Core\TypedData\TypedDataInterface;
|
|
|
+use Drupal\Core\Field\BaseFieldDefinition;
|
|
|
+use Drupal\Core\TypedData\ComputedItemListTrait;
|
|
|
+
|
|
|
+// https://www.drupal.org/node/2112677
|
|
|
+// https://www.cornel.co/article/entity-reference-computed-field-example-drupal
|
|
|
+// https://www.caxy.com/blog/drupal-custom-form-and-computed-fields
|
|
|
+
|
|
|
+class ComputedProdVariationsReferences extends EntityReferenceFieldItemList
|
|
|
+{
|
|
|
+ use ComputedItemListTrait;
|
|
|
+ /**
|
|
|
+ * The entity type manager.
|
|
|
+ *
|
|
|
+ * @var \Drupal\Core\Entity\EntityTypeManagerInterface
|
|
|
+ */
|
|
|
+ protected $entityTypeManager;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function __construct(BaseFieldDefinition $definition, $name, TypedDataInterface $parent) {
|
|
|
+ parent::__construct($definition, $name, $parent);
|
|
|
+ $this->entityTypeManager = \Drupal::entityTypeManager();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Compute the values.
|
|
|
+ */
|
|
|
+ protected function computeValue() {
|
|
|
+ $query = \Drupal::entityQuery('commerce_product_variation')
|
|
|
+ ->condition('status', 1)
|
|
|
+ ->sort('created', 'DESC')
|
|
|
+ // ->exists('field_visuel')
|
|
|
+ // ->condition('type', 'article')
|
|
|
+ ->range(0,12);
|
|
|
+ $ids = $query->execute();
|
|
|
+ foreach ($ids as $key => $id) {
|
|
|
+ $this->list[$key] = $this->createItem($key, $id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|