Hallo, ich versuche gerade die /GXMainComponents/View/ThemeContentViews/products/ModifierGroupThemeContentView.php zu erweitern. In der Templatedatei modifier_group_type_dropdown.html kommt das aber nicht an. Wenn ich die originale ModifierGroupThemeContentView.php erweitere funktioniert es. Ist das über den GXModules Ordner überhaupt möglich?
Hallo, aktuell ist es nicht möglich diese Klassen zu überladen. Wir sind aber dabei dafür eine Lösung zu finden. Sobald ich dazu mehr Informationen habe werde ich in diesen Beitrag noch einmal schreiben.
Danke. Wäre es alternativ dazu möglich daß man für ein Theme unterdrückt daß die product_info_option_template_product_options_dropdown.html von der modifier_group_type_dropdown.html überschrieben wird? In der product_info_template_standard.html sind sowohl die {$MODULE_modifier_groups} als auch die {$MODULE_product_options} untereinander vorhanden, es werden aber nur die {$MODULE_modifier_groups} ausgegeben.
Ich habe dazu mal ein Ticket erstellt. Die ModifierGroupThemeContentView und ModifierGroupsThemeContentView werden bald überladbar sein.
Im Ticket steht nun erledigt aber 0%. ? Ich habs mal getestet in der 4.1.1.0 - funktioniert. Noch eine Frage dazu: Mit welcher Variable kann ich in der ModifierGroupThemeContentView die Artikel-ID auslesen?
Wir nutzen das "erledigt" in unseren Tickets nicht. $this->sellingUnit->id()->productId()->value() führt zur Artikel-ID.
Stimmt, aber: Wenn ich in der originalen Datei die ID in der Funktion prepare_data() so hole kann ich die auch ausgeben. In meiner "Überladungsdatei" funktioniert das nicht: Code: public function prepare_data() { $productId = $this->sellingUnit->id()->productId()->value(); return parent::prepare_data(); } Fehlerlog: [2020-06-06 13:39:04 | ERROR] Uncaught Error: Call to a member function id() on null in /var/customers/xxxxx/GXModules/Name/MeinModul/Shop/Overloads/ModifierGroupThemeContentView/TEST_ModifierGroupThemeContentView.php:21
Da ist uns leider ein weiterer Fehler unterlaufen, nämlich dass $sellingUnit private statt protected ist. Somit hast du keinen Zugriff. Das müssen wir korrigieren.
Du kannst auch den Konstruktor überladen, um so an die $sellingUnit zu kommen. PHP: public function __construct(SellingUnitInterface $sellingUnit, CustomersStatusShowPrice $showPriceStatus){ parent::__construct($sellingUnit, $showPriceStatus); $this->mySellingUnit = $sellingUnit;}public function prepare_data(){ $productId = $this->mySellingUnit->id()->productId()->value(); return parent::prepare_data();}