Mageworx 고급 제품 옵션 사용자 정의
게시 됨: 2020-06-09솔루션이 아무리 강력하더라도 비즈니스별 목표나 선호도를 달성하려면 사용자 지정이 필요할 수 있습니다.
Magento 2 Advanced Product Options 확장의 Modal 창에서 Weight 및 WeightType 필드를 가져오는 기능에 대해 지원 팀이 받은 몇 가지 요청에 따라 해당 목표를 쉽게 달성할 수 있는 방법에 대한 빠른 방법 안내를 공유하게 되어 기쁩니다. 따라하기 쉬운 지침을 읽으십시오.
목차
- 고급 제품 옵션 사용자 정의에 대한 단계별 가이드
- 1 단계. 새 모듈 생성
- 2 단계. 수업 복사
- 3단계. 클래스 수정
- 4단계. 클래스 재정의
- 5단계. 새 모듈 설치
- 결론
고급 제품 옵션 사용자 정의에 대한 단계별 가이드
기본적으로 고급 제품 옵션 확장 프로그램에서 중량 및 중량 유형 필드가 표시되는 방식은 다음과 같습니다.
모달 창 외부에 이러한 필드를 표시하려면 다음 5가지 간단한 단계를 따라야 합니다.
1 단계. 새 모듈 생성
VendorName_OptionCustomFieldWeight
라는 새 모듈을 만드는 것으로 시작하십시오.
그에 대한,
-
app/code/VendorName/OptionCustomFieldWeight
디렉토리를 만들고, - 일반적으로 모듈을 등록하는 데 사용되는 세 가지 표준 파일(예:
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__ );
2 단계. 클래스 복사
다음으로 다음 클래스를 찾아 복사해야 합니다. /app/code/MageWorx/OptionFeatures/Ui/DataProvider/Product/Form/Modifier/Features.php
/app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php
.
3단계. 클래스 수정
이제 복사된 클래스를 수정해 보겠습니다. 그렇게 하려면 다음을 수행해야 합니다.
a) 클래스의 namespace
를 VendorName\OptionCustomFieldWeight\Ui\DataProvider\Product\Form\Modifier;
그리고 나중에 필요한 클래스를 추가합니다. 이러한 수업은
use MageWorx\OptionFeatures\Model\Config\Source\Product\Options\Weight as ProductOptionsWeight;
그리고
use Magento\Ui\Component\Form\Element\Input;
모든 것이 올바르게 완료되면 다음과 같이 표시됩니다.
…. 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
클래스 개체를 생성자에 추가합니다.
…. /** * @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()
메서드를 찾습니다.
/** * The custom option value fields config * * @return array */ protected function getValueFeaturesFieldsConfig() { $fields = []; $fields[Helper::KEY_IS_DEFAULT] = $this->getIsDefaultConfig(148); return $fields; }
그리고 getWeightConfig()
및 getWeightTypeConfig()
메서드를 사용자 지정 옵션 값에 대한 사용자 지정 필드가 있는 배열에 추가합니다. 이러한 방법은 해당 구성을 구현합니다. 이제 getValueFeaturesFieldsConfig()
메서드는 다음과 같아야 합니다.
/** * 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()
메서드 이후에 getWeightConfig()
를 구현하고 필드 구성의 getWeightTypeConfig()
메서드:
/** * 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단계. 클래스 재정의
/app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php
수정된 클래스가 원래 /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php
대신 작업을 시작할 시간입니다. /app/code/VendorName/OptionCustomFieldWight/Ui/DataProvider/Product/Form/Modifier/Features.php
. 이를 달성하려면 종속성 구성 파일에서 이를 재정의해야 합니다. 이를 위해 /app/code/VendorName/OptionCustomFieldWeight/etc/adminhtml/di.xml
파일을 만들고 다음 코드를 추가해 보겠습니다.
<?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>
5단계. 새 모듈 설치
거의 다 왔습니다! 남은 것은 새 모듈을 설치하는 것뿐입니다.
시작하려면 다음 명령을 실행하십시오.
php bin/magento module:status
활성화 및 비활성화된 모듈 목록이 표시됩니다. 새로운 VendorName_OptionCustomFieldWight
모듈은 비활성화된 모듈 내에 있어야 합니다.
활성화합시다:
php bin/magento module:enable VendorName_OptionCustomFieldWeight
데이터베이스를 업데이트한 후,
php bin/magento setup:upgrade
다음 결과가 표시됩니다.
축하합니다! 모달 창에서 Weight & Weight Type 필드를 성공적으로 제거했습니다.
결론
이 단계별 가이드가 고급 제품 옵션 확장을 쉽게 사용자 지정하여 기본 설정을 달성하는 데 도움이 되었기를 바랍니다. 질문이나 어려움이 있는 경우 아래 의견란에 자유롭게 의견을 남겨주세요. 그렇지 않으면 지원 팀이 [email protected] 에서 항상 기꺼이 도와드립니다! =)