Mageworx Gelişmiş Ürün Seçenekleri Özelleştirme
Yayınlanan: 2020-06-09Bir çö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:
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,
-
app/code/VendorName/OptionCustomFieldWeight
dizinini oluşturun, - 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:
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! =)