Browse Source

added product variations to home page on pricing

Bachir Soussi Chiadmi 3 years ago
parent
commit
a292da37c8

+ 11 - 1
config/sync/core.entity_view_display.node.frontpage.default.yml

@@ -98,6 +98,7 @@ third_party_settings:
     group_pricing:
       children:
         - field_pricing
+        - computed_products_reference
       parent_name: ''
       weight: 4
       format_type: html_element
@@ -247,6 +248,15 @@ content:
     third_party_settings: {  }
     type: entity_reference_entity_view
     label: hidden
+  computed_products_reference:
+    label: hidden
+    weight: 6
+    region: content
+    settings:
+      link: true
+      view_mode: default
+    third_party_settings: {  }
+    type: entity_reference_entity_view
   computed_showrooms_reference:
     label: hidden
     weight: 6
@@ -314,7 +324,7 @@ content:
     region: content
   field_pricing:
     weight: 5
-    label: above
+    label: hidden
     settings: {  }
     third_party_settings: {  }
     type: text_default

+ 9 - 1
config/sync/core.entity_view_display.node.frontpage.teaser.yml

@@ -1,6 +1,6 @@
 uuid: c04cd92d-7d88-4dbe-b830-6fe45f5a7534
 langcode: en
-status: true
+status: false
 dependencies:
   config:
     - core.entity_view_mode.node.teaser
@@ -36,6 +36,14 @@ content:
       link: true
     third_party_settings: {  }
     type: entity_reference_label
+  computed_products_reference:
+    label: hidden
+    weight: -5
+    region: content
+    settings:
+      link: true
+    third_party_settings: {  }
+    type: entity_reference_label
   computed_showrooms_reference:
     label: hidden
     weight: -5

+ 20 - 0
web/modules/custom/materio_home/materio_home.module

@@ -98,6 +98,26 @@ function materio_home_entity_bundle_field_info(EntityTypeInterface $entity_type,
         ])
       ->setClass(\Drupal\materio_home\Plugin\Field\FieldType\ComputedArticlesReferences::class);
 
+      $fields['computed_products_reference'] = BaseFieldDefinition::create('entity_reference')
+        ->setName('computed_products_reference')
+        ->setLabel(t('Computed Products References'))
+        ->setDescription(t('Computed Products References.'))
+        // // The Entity Type this field belongs to.
+        ->setTargetEntityTypeId($entity_type->id())
+        // // The Entity Type bundle this field belongs to.
+        ->setTargetBundle($bundle)
+        ->setSetting('target_type', 'commerce_product_variation')
+        ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)
+        ->setComputed(TRUE)
+        ->setRevisionable(FALSE)
+        ->setTranslatable(FALSE)
+        ->setDisplayConfigurable('view', TRUE)
+        ->setDisplayOptions('view', [
+            'label' => 'hidden',
+            'weight' => -5,
+          ])
+        ->setClass(\Drupal\materio_home\Plugin\Field\FieldType\ComputedProdVariationsReferences::class);
+
       return $fields;
   }
 }

+ 50 - 0
web/modules/custom/materio_home/src/Plugin/Field/FieldType/ComputedProdVariationsReferences.php

@@ -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);
+    }
+  }
+
+}