ProductListingContentControl -> AddonValues einbinden?!

Thema wurde von Anonymous, 2. Juli 2019 erstellt.

  1. Anonymous

    Anonymous Mitglied

    Registriert seit:
    21. Mai 2019
    Beiträge:
    19
    Danke erhalten:
    1
    Hallo,

    ich möchte AddonValues (Extrafelder) in der Product Listing darstellen.

    Dazu möchte ich die benötigten AddonValues via $this->set_content_data('XXX', $addonValues['XXX']); bereitstellen.

    Leider schaffe ich das nicht.

    In der Product Info war das ganze noch recht "easy":
    Code:
     class ExtraFieldsProductInfoContentView extends ExtraFieldsProductInfoContentView_parent {
                      public function _assignProductData() {
                            $this->_assignExtrafields();
    
                            return parent::_assignProductData();
                      }
    
                      // assign new fields to the products content view
                      protected function _assignExtrafields() {
                            
                             $productReadService = StaticGXCoreLoader::getService('ProductRead');
                            
                             $productObj = $productReadService->getProductById(new IdType($this->product->pID));
    
                             $addonValues = $productObj->getAddonValues()->getArray();
                             $this->set_content_data('XXX', $addonValues['XXX']);
    
    Aber wie muss das Ganze jetzt hier aussehen?
     
  2. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Wenn Du die Shopinternen Zusatzfelder nutzt, die stehen im Artikel bereits zur Verfügung - da brauchst Du nichts bauen.

    Bei eigenen Extrafeldern könnte Dir das hier helfen:
    (Link nur für registrierte Nutzer sichtbar.)
    Da geht es am Anfang zwar um das Einbinden im Admin, behandelt dann aber auch das Frontend. Ich weiß allerdings nicht ob nur mit angelegten Feldern oder auch mit den AddOn-Values
     
  3. Anonymous

    Anonymous Mitglied

    Registriert seit:
    21. Mai 2019
    Beiträge:
    19
    Danke erhalten:
    1
    #3 Anonymous, 2. Juli 2019
    Zuletzt bearbeitet: 2. Juli 2019
    danke barbara, ich habe einen Beitrag von dir gefunden aus dem Jahre 2015 https://www.gambio.de/forum/threads...istenansicht-anzeigen.8367/page-4#post-171923

    Habe nun in GXModules/XXX/XXX/Shop/Overloads/product die Datei: extrafield_product.inc.php
    angelegt.

    mit folgendem Inhalt:
    Code:
    <?php
    
    class extrafield_product extends extrafield_product_parent
    
    {
      function buildDataArray(&$array, $image = 'thumbnail')
      {
        global $xtPrice, $main;
    
        $t_data_array=parent::buildDataArray($array, $image);
        //Additional info in $t_data_array
          $t_data_array['PRODUCTS_PC_GROUPID']=$array['products_pc_groupid'];
        //Additional info in $t_data_array
        return $t_data_array;
      }
    }
    ?>
    Nun wird mir ein leeres Smarty (PRODUCTS_PC_GROUPID) im Frontend bereits angezeigt. Bräuchte es jetzt nur noch befüllt mit den Werten.

    Ich nutze eigene addon values (addon_values_storage) und nicht die Extrafelder zum Produkt (=extra Spalten zum Product anghängt), oder aber die integrierten Zusatzfelder. (getAddonValues -> wie bei product description, info)

    Im Prinzip genauso wie es in deinem verlinkten Beitrag erwähnt wurde. Nur das Thema product_listing wird da nicht behandelt...
     
  4. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Da bin ich auch raus, denn ich hatte meine Extrafelder als Datenbank-Feld unter products angelegt.
    Ich fürchte, da wird jemand von Gambio antworten müssen, oder einer der erfahrenen Programmierer :)
     
  5. Anonymous

    Anonymous Mitglied

    Registriert seit:
    21. Mai 2019
    Beiträge:
    19
    Danke erhalten:
    1
    hab's hinbekommen:

    Code:
    <?php
    
    class extrafield_product extends extrafield_product_parent
    
    {
      function buildDataArray(&$array, $image = 'thumbnail')
      {
        global $xtPrice, $main;
    
        $t_data_array=parent::buildDataArray($array, $image);
        $product_id = $array['products_id'];
    
        /** @var ProductReadService $productReadService */
            $productReadService = StaticGXCoreLoader::getService('ProductRead');
            /** @var StoredProduct $product */
            //$productObj = $productReadService->getProductById(new IdType($this->product->pID));
            $productObj = $productReadService->getProductById(new IdType($product_id));
    
            $addonValues = $productObj->getAddonValues()->getArray();
    
        //Additional info in $t_data_array
          $t_data_array['PRODUCTS_PC_GROUPID']=$addonValues['products_pc_groupid'];
        //Additional info in $t_data_array
        return $t_data_array;
      }
    }
    ?>