Mageworx Erweiterte Produktoptionen Anpassung

Veröffentlicht: 2020-06-09

Unabhängig davon, wie robust eine Lösung ist, kann eine Anpassung erforderlich sein, um geschäftsspezifische Ziele oder Präferenzen zu erreichen.

Nach einigen Anfragen, die unser Support-Team bezüglich der Möglichkeit erhalten hat, die Felder „ Weight “ und „WeightType“ aus dem Modal-Fenster in der Erweiterung „Magento 2 Advanced Product Options“ zu übernehmen, stellen wir Ihnen gerne eine kurze Anleitung zur Verfügung, mit der Sie dieses Ziel einfach erreichen können. Lesen Sie weiter für leicht verständliche Richtlinien.

Inhaltsverzeichnis

  • Schritt-für-Schritt-Anleitung zur Anpassung erweiterter Produktoptionen
    • Schritt 1. Erstellung eines neuen Moduls
    • Schritt 2. Klasse Kopieren
    • Schritt 3. Klassenänderung
    • Schritt 4. Überschreiben der Klasse
    • Schritt #5. Neue Modulinstallation
  • Endeffekt

Schritt-für-Schritt-Anleitung zur Anpassung erweiterter Produktoptionen

So sehen die Felder „ Gewicht “ und „ Gewichtstyp “ in der Erweiterung „Erweiterte Produktoptionen“ standardmäßig aus:

MageWorx Erweiterte Produktoptionen Anpassung | MageWorx-Blog

Um diese Felder außerhalb des modalen Fensters anzuzeigen, müssen Sie diese fünf einfachen Schritte befolgen:

Schritt 1. Erstellung eines neuen Moduls

Beginnen Sie mit der Erstellung eines neuen Moduls: VendorName_OptionCustomFieldWeight .

Dafür,

  1. Erstellen Sie das Verzeichnis app/code/VendorName/OptionCustomFieldWeight ,
  2. Generieren und füllen Sie drei Standarddateien aus, die normalerweise zum Registrieren eines Moduls verwendet werden, dh composer.json , etc/module.xml , registration.php .

1) composer.json

 "name": "vendorname/module-optioncustomfieldweight", "description": "N/A", "require": { "magento/framework" : ">=101.0.0 <103", "mageworx/module-optionfeatures" : ">=2.16.1" }, "type": "magento2-module", "version": "1.0.0", "license": [ "OSL-3.0", "AFL-3.0" ], "autoload": { "files": [ "registration.php" ], "psr-4": { "VendorName\\OptionCustomFieldWeight\\": "" } } }

2) etc/module.xml

 <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="VendorName_OptionCustomFieldWeight" setup_version="2.0.0"> <sequence> <module name="Magento_Catalog"/> <module name="MageWorx_OptionBase"/> <module name="MageWorx_OptionFeatures"/> </sequence> </module> </config>

3) registration.php

 <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'VendorName_OptionCustomFieldWeight', __DIR__ );

Schritt 2. Klasse Kopieren

Als nächstes müssen Sie die folgende Klasse finden und kopieren: /app/code/MageWorx/OptionFeatures/Ui/DataProvider/Product/Form/Modifier/Features.php   zu /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php .

Schritt 3. Klassenänderung

Lassen Sie uns nun die kopierte Klasse ändern. Dazu müssen Sie:

a) Ändern Sie den namespace unserer Klasse in VendorName\OptionCustomFieldWeight\Ui\DataProvider\Product\Form\Modifier;

und fügen Sie die Klassen hinzu, die wir etwas später benötigen. Diese Klassen sind

use MageWorx\OptionFeatures\Model\Config\Source\Product\Options\Weight as ProductOptionsWeight;

und

use Magento\Ui\Component\Form\Element\Input;

Wenn alles richtig gemacht ist, sollte dies wie folgt aussehen:

 …. namespace VendorName\OptionCustomFieldWeight\Ui\DataProvider\Product\Form\Modifier; use MageWorx\OptionBase\Ui\DataProvider\Product\Form\Modifier\ModifierInterface; use MageWorx\OptionFeatures\Helper\Data as Helper; use Magento\Ui\Component\Form\Element\Hidden; use Magento\Ui\Component\Modal; use Magento\Framework\UrlInterface; use Magento\Framework\App\Request\Http; use MageWorx\OptionFeatures\Model\Config\Source\ShareableLinkMode as SourceConfig; use MageWorx\OptionFeatures\Model\Config\Source\Product\Options\Weight as ProductOptionsWeight; use Magento\Ui\Component\Form\Element\Input; class Features extends AbstractModifier implements ModifierInterface { ….

b) Fügen Sie das MageWorx\OptionFeatures\Model\Config\Source\Product\Options\Weight unserem Konstruktor hinzu:

 …. /** * @var ProductOptionsWeight */ protected $productOptionsWeight; /** * @param ArrayManager $arrayManager * @param StoreManagerInterface $storeManager * @param LocatorInterface $locator * @param Helper $helper * @param Http $request * @param UrlInterface $urlBuilder * @param SourceConfig $sourceConfig * @param ProductOptionsWeight $productOptionsWeight */ public function __construct( ArrayManager $arrayManager, StoreManagerInterface $storeManager, LocatorInterface $locator, Helper $helper, Http $request, SourceConfig $sourceConfig, UrlInterface $urlBuilder, ProductOptionsWeight $productOptionsWeight ) { $this->arrayManager = $arrayManager; $this->storeManager = $storeManager; $this->locator = $locator; $this->helper = $helper; $this->request = $request; $this->sourceConfig = $sourceConfig; $this->urlBuilder = $urlBuilder; $this->productOptionsWeight = $productOptionsWeight; } …..

c) Suchen Sie die Methode getValueFeaturesFieldsConfig() :

 /** * The custom option value fields config * * @return array */ protected function getValueFeaturesFieldsConfig() { $fields = []; $fields[Helper::KEY_IS_DEFAULT] = $this->getIsDefaultConfig(148); return $fields; }

Fügen Sie dem Array mit benutzerdefinierten Feldern für benutzerdefinierte Optionswerte die Methoden getWeightConfig() und getWeightTypeConfig() . Diese Methoden implementieren eine entsprechende Konfiguration. Nun muss die Methode getValueFeaturesFieldsConfig() wie folgt aussehen:

 /** * The custom option value fields config * * @return array */ protected function getValueFeaturesFieldsConfig() { $fields = []; $fields[Helper::KEY_IS_DEFAULT] = $this->getIsDefaultConfig(148); if ($this->helper->isWeightEnabled()) { $fields[Helper::KEY_WEIGHT] = $this->getWeightConfig(34); $fields[Helper::KEY_WEIGHT_TYPE] = $this->getWeightTypeConfig(35); } return $fields; }

d) Lassen Sie uns nach der getValueFeaturesFieldsConfig() -Methode die getWeightConfig() und implementieren getWeightTypeConfig() Methoden der Feldkonfiguration:

 /** * Get weight unit name * * @return mixed */ protected function getWeightUnit() { try { $unit = $this->locator->getStore()->getConfig('general/locale/weight_unit'); } catch (\Exception $e) { $unit = $this->storeManager->getStore()->getConfig('general/locale/weight_unit'); } return $unit; } /** * Weight field config * * @param $sortOrder * @return array */ protected function getWeightConfig($sortOrder) { return [ 'arguments' => [ 'data' => [ 'config' => [ 'label' => __('Weight'), 'componentType' => Field::NAME, 'component' => 'Magento_Catalog/js/components/custom-options-component', 'template' => 'Magento_Catalog/form/field', 'formElement' => Input::NAME, 'dataScope' => Helper::KEY_WEIGHT, 'dataType' => Number::NAME, 'validation' => [ 'validate-number' => true, 'validate-zero-or-greater' => true, ], 'sortOrder' => $sortOrder, 'additionalClasses' => 'admin__field-small', 'addbefore' => $this->getWeightUnit(), 'addbeforePool' => $this->productOptionsWeight ->prefixesToOptionArray($this->getWeightUnit()), 'imports' => [ 'disabled' => '!${$.provider}:' . self::DATA_SCOPE_PRODUCT . '.product_has_weight:value', ], ], ], ], ]; } /** * Weight field config * * @param $sortOrder * @return array */ protected function getWeightTypeConfig($sortOrder) { return [ 'arguments' => [ 'data' => [ 'config' => [ 'label' => __('Weight Type'), 'component' => 'MageWorx_OptionFeatures/js/component/custom-options-weight-type', 'componentType' => Field::NAME, 'formElement' => Select::NAME, 'dataScope' => Helper::KEY_WEIGHT_TYPE, 'dataType' => Text::NAME, 'sortOrder' => $sortOrder, 'options' => $this->productOptionsWeight->toOptionArray(), 'imports' => [ 'weightIndex' => Helper::KEY_WEIGHT, ], ], ], ], ]; }

Schritt 4. Überschreiben der Klasse

Es ist höchste Zeit, dass unsere /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php geänderte Klasse anstelle der ursprünglichen /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php . Um dies zu erreichen, müssen wir es in der Abhängigkeitskonfigurationsdatei überschreiben. Erstellen wir dazu die Datei /app/code/VendorName/OptionCustomFieldWeight/etc/adminhtml/di.xml und fügen den folgenden Code hinzu:

 <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="MageWorx\OptionFeatures\Ui\DataProvider\Product\Form\Modifier\Features" type="VendorName\OptionCustomFieldWeight\Ui\DataProvider\Product\Form\Modifier\Features"/> </config>

Schritt #5. Neue Modulinstallation

Wir sind fast da! Jetzt müssen Sie nur noch unser neues Modul installieren.

Führen Sie zunächst den folgenden Befehl aus:

php bin/magento module:status

Sie sehen eine Liste der aktivierten und deaktivierten Module. Unser neues VendorName_OptionCustomFieldWight -Modul sollte sich in den deaktivierten Modulen befinden.

Aktivieren wir es:

php bin/magento module:enable VendorName_OptionCustomFieldWeight

Nachdem Sie die Datenbank aktualisiert haben,

php bin/magento setup:upgrade

Sie sehen das folgende Ergebnis:

MageWorx Erweiterte Produktoptionen Anpassung | MageWorx-Blog

Herzliche Glückwünsche! Sie haben die Felder „Gewicht“ und „Gewichtstyp “ erfolgreich aus dem Modalfenster entfernt.

Endeffekt

Wir hoffen, dass Ihnen diese Schritt-für-Schritt-Anleitung dabei geholfen hat, die Erweiterung „Erweiterte Produktoptionen“ einfach anzupassen und so Ihre Präferenzen zu erreichen. Sollten Sie Fragen oder Schwierigkeiten haben, können Sie gerne einen Kommentar im Kommentarfeld unten hinterlassen. Ansonsten steht Ihnen unser Support-Team unter [email protected] jederzeit gerne zur Verfügung! =)

Buchen Sie eine Live-Demo mit Mageworx