Kustomisasi Opsi Produk Lanjutan Mageworx
Diterbitkan: 2020-06-09Tidak 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:
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,
- Buat direktori
app/code/VendorName/OptionCustomFieldWeight
, - 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:
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] ! =)