Kustomisasi Opsi Produk Lanjutan Mageworx

Diterbitkan: 2020-06-09

Tidak peduli seberapa kuat solusinya, penyesuaian mungkin diperlukan untuk mencapai tujuan atau preferensi khusus bisnis.

Mengikuti beberapa permintaan yang diterima Tim Dukungan kami mengenai kemampuan untuk mengambil bidang Berat dan Jenis Berat dari Jendela Modal di ekstensi Opsi Produk Lanjutan Magento 2, dengan senang hati kami membagikan panduan cara cepat tentang cara untuk mencapai tujuan itu dengan mudah. Baca terus untuk panduan yang mudah diikuti.

Daftar isi

  • Panduan Langkah-demi-Langkah tentang Penyesuaian Opsi Produk Tingkat Lanjut
    • Langkah 1. Pembuatan Modul Baru
    • Langkah 2. Penyalinan Kelas
    • Langkah #3. Modifikasi Kelas
    • Langkah #4. Mengganti Kelas
    • Langkah #5. Instalasi Modul Baru
  • Intinya

Panduan Langkah-demi-Langkah tentang Penyesuaian Opsi Produk Tingkat Lanjut

Ini adalah tampilan bidang Berat & Jenis Berat di ekstensi Opsi Produk Lanjutan yang sudah ada:

Kustomisasi Opsi Produk Lanjutan MageWorx | Blog MageWorx

Untuk menampilkan bidang ini di luar jendela modal, Anda harus mengikuti lima langkah mudah ini:

Langkah 1. Pembuatan Modul Baru

Mulailah dengan membuat modul baru: VendorName_OptionCustomFieldWeight .

Untuk itu,

  1. Buat direktori app/code/VendorName/OptionCustomFieldWeight ,
  2. Buat dan isi tiga file standar yang biasanya digunakan untuk mendaftarkan modul, yaitu 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__ );

Langkah 2. Penyalinan Kelas

Selanjutnya, Anda perlu menemukan dan menyalin kelas berikut: /app/code/MageWorx/OptionFeatures/Ui/DataProvider/Product/Form/Modifier/Features.php   ke /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php .

Langkah #3. Modifikasi Kelas

Sekarang, mari kita ubah kelas yang disalin. Untuk melakukannya, Anda perlu:

a) Ubah namespace kelas kita menjadi VendorName\OptionCustomFieldWeight\Ui\DataProvider\Product\Form\Modifier;

dan tambahkan kelas yang akan kita butuhkan nanti. Kelas-kelas ini adalah

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

dan

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

Jika semua dilakukan dengan benar, ini akan terlihat sebagai berikut:

 …. 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) Tambahkan objek kelas MageWorx\OptionFeatures\Model\Config\Source\Product\Options\Weight ke konstruktor kami:

 …. /** * @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) Temukan metode getValueFeaturesFieldsConfig() :

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

Dan tambahkan metode getWeightConfig() dan getWeightTypeConfig() ke array dengan bidang khusus untuk nilai opsi khusus. Metode ini akan menerapkan konfigurasi yang sesuai. Sekarang, metode getValueFeaturesFieldsConfig() harus terlihat sebagai berikut:

 /** * 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) Setelah metode getValueFeaturesFieldsConfig() , mari kita implementasikan getWeightConfig() dan getWeightTypeConfig() metode konfigurasi bidang:

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

Langkah #4. Mengganti Kelas

Sudah saatnya untuk /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php kelas yang dimodifikasi untuk mulai bekerja alih-alih /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php yang asli /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php . Untuk mencapai itu, kita perlu menimpanya di file konfigurasi dependensi. Untuk itu, mari kita buat file /app/code/VendorName/OptionCustomFieldWeight/etc/adminhtml/di.xml , dan tambahkan kode berikut:

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

Langkah #5. Instalasi Modul Baru

Kami hampir sampai! Satu-satunya yang tersisa adalah menginstal modul baru kami.

Untuk memulainya, jalankan perintah berikut:

php bin/magento module:status

Anda akan melihat daftar modul yang diaktifkan dan dinonaktifkan. Modul VendorName_OptionCustomFieldWight baru kami harus ditempatkan di dalam modul yang dinonaktifkan.

Mari kita aktifkan:

php bin/magento module:enable VendorName_OptionCustomFieldWeight

Setelah Anda memperbarui database,

php bin/magento setup:upgrade

Anda akan melihat hasil berikut:

Kustomisasi Opsi Produk Lanjutan MageWorx | Blog MageWorx

Selamat! Anda telah berhasil menghapus bidang Berat & Jenis Berat dari jendela modal.

Intinya

Kami berharap panduan langkah demi langkah ini telah membantu Anda menyesuaikan ekstensi Opsi Produk Lanjutan dengan mudah dan dengan demikian mencapai preferensi Anda. Jika Anda memiliki pertanyaan atau kesulitan, jangan ragu untuk meninggalkan komentar di kotak komentar di bawah. Jika tidak, Tim Dukungan kami selalu dengan senang hati membantu di [email protected] ! =)

Pesan Demo Langsung dengan Mageworx