Mageworx Gelişmiş Ürün Seçenekleri Özelleştirme

Yayınlanan: 2020-06-09

Bir çözüm ne kadar sağlam olursa olsun, işletmeye özel hedeflere veya tercihlere ulaşmak için özelleştirme gerekebilir.

Destek Ekibimizin Magento 2 Gelişmiş Ürün Seçenekleri uzantısındaki Modal Penceresinden Ağırlık ve Ağırlık Türü alanlarını alma yeteneğiyle ilgili olarak aldığı bazı taleplerin ardından, bu hedefe kolayca ulaşmanın yolları hakkında hızlı bir nasıl yapılır kılavuzunu paylaşmaktan mutluluk duyuyoruz. Takip etmesi kolay yönergeler için okumaya devam edin.

İçindekiler

  • Gelişmiş Ürün Seçenekleri Özelleştirmesi Hakkında Adım Adım Kılavuz
    • Aşama 1. Yeni Modül Oluşturma
    • Adım 2. Sınıf Kopyalama
    • Aşama 3. Sınıf Değiştirme
    • 4. Adım. Sınıfı Geçersiz Kılmak
    • Adım 5. Yeni Modül Kurulumu
  • Sonuç olarak

Gelişmiş Ürün Seçenekleri Özelleştirmesi Hakkında Adım Adım Kılavuz

Kutudan çıktığı haliyle Gelişmiş Ürün Seçenekleri uzantısında Ağırlık ve Ağırlık Türü alanları şu şekilde görünür:

MageWorx Gelişmiş Ürün Seçenekleri Özelleştirme | MageWorx Blogu

Bu alanları kalıcı pencerenin dışında görüntülemek için şu beş kolay adımı uygulamanız gerekir:

Aşama 1. Yeni Modül Oluşturma

Yeni bir modül oluşturmaya başlayın: VendorName_OptionCustomFieldWeight .

Bunun için,

  1. app/code/VendorName/OptionCustomFieldWeight dizinini oluşturun,
  2. Normalde bir modülü kaydetmek için kullanılan üç standart dosya oluşturun ve doldurun, yani, 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__ );

Adım 2. Sınıf Kopyalama

Ardından, şu sınıfı bulup kopyalamanız gerekir: /app/code/MageWorx/OptionFeatures/Ui/DataProvider/Product/Form/Modifier/Features.php   /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php .

Aşama 3. Sınıf Değiştirme

Şimdi kopyalanan sınıfı değiştirelim. Bunu yapmak için yapmanız gerekenler:

a) Sınıfımızın namespace VendorName\OptionCustomFieldWeight\Ui\DataProvider\Product\Form\Modifier;

ve biraz sonra ihtiyacımız olacak sınıfları ekleyin. Bu sınıflar

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

ve

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

Her şey doğru yapılırsa, bu aşağıdaki gibi görünmelidir:

 …. 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) MageWorx\OptionFeatures\Model\Config\Source\Product\Options\Weight sınıf nesnesini yapıcımıza ekleyin:

 …. /** * @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) getValueFeaturesFieldsConfig() yöntemini bulun:

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

Ve özel seçenek değerleri için özel alanlar içeren diziye getWeightConfig() ve getWeightTypeConfig() yöntemlerini ekleyin. Bu yöntemler, karşılık gelen bir yapılandırma uygulayacaktır. Şimdi, getValueFeaturesFieldsConfig() yöntemi aşağıdaki gibi görünmelidir:

 /** * 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) getValueFeaturesFieldsConfig() yönteminden sonra, getWeightConfig() uygulayalım ve getWeightTypeConfig() alan yapılandırma yöntemleri:

 /** * 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, ], ], ], ], ]; }

4. Adım. Sınıfı Geçersiz Kılmak

/app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php değiştirilmiş sınıfımızın orijinal /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php yerine çalışmaya başlamasının tam zamanı /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php . Bunu başarmak için, bağımlılık yapılandırma dosyasında onu geçersiz kılmamız gerekiyor. Bunun için /app/code/VendorName/OptionCustomFieldWeight/etc/adminhtml/di.xml dosyasını oluşturalım ve aşağıdaki kodu ekleyelim:

 <?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>

Adım 5. Yeni Modül Kurulumu

Neredeyse geldik! Geriye sadece yeni modülümüzü kurmak kalıyor.

Başlamak için aşağıdaki komutu çalıştırın:

php bin/magento module:status

Etkin ve devre dışı modüllerin bir listesini göreceksiniz. Yeni VendorName_OptionCustomFieldWight modülümüz, devre dışı bırakılanlar içinde bulunmalıdır.

Etkinleştirelim:

php bin/magento module:enable VendorName_OptionCustomFieldWeight

Veritabanını güncelledikten sonra,

php bin/magento setup:upgrade

aşağıdaki sonucu göreceksiniz:

MageWorx Gelişmiş Ürün Seçenekleri Özelleştirme | MageWorx Blogu

Tebrikler! Ağırlık ve Ağırlık Türü alanlarını kalıcı pencereden başarıyla kaldırdınız.

Sonuç olarak

Bu adım adım kılavuzun Gelişmiş Ürün Seçenekleri uzantısını kolayca özelleştirmenize ve böylece tercihlerinize ulaşmanıza yardımcı olduğunu umuyoruz. Herhangi bir sorunuz veya zorluğunuz varsa, aşağıdaki yorum kutusuna yorum bırakmaktan çekinmeyin. Aksi takdirde, Destek Ekibimiz [email protected] adresinde size yardımcı olmaktan her zaman mutluluk duyar! =)

Mageworx ile Canlı Demo Rezervasyonu Yapın