Magento 2: 제품 옵션 템플릿에 사용자 정의 필드 추가
게시 됨: 2021-02-04고급 제품 옵션 확장을 사용하면 제품 페이지의 옵션을 처리할 수 있을 뿐만 아니라 다양한 옵션 템플릿을 만들어 특정 제품에 대량 할당할 수 있습니다.
이 문서에서는 고급 제품 옵션(APO) 모범 사례 및 표준에 따라 옵션 및 옵션 템플릿에 대한 사용자 지정 필드 Magento를 추가하는 단계별 지침을 제공합니다.
목차
- 고급 사용자 정의 필드란 무엇입니까?
- 단계별 지침
- 시작하기 전에
- 1 단계. 클래스 재작성
- 2단계. 의존성 주입 재작성
- 3단계. 새로운 클래스 생성
- 4단계. 버전 증가
- 5단계. 종악장
- 요약
고급 사용자 정의 필드란 무엇입니까?
고급 제품 옵션 확장은 다양한 가능성을 제공하도록 제작되었습니다. 그러나 모든 비즈니스가 다르고 뚜렷하기 때문에 일회성 목표를 보완하기 위해 사용자 지정이 필요할 수 있습니다. 이는 옵션 템플릿과 추가된 고급 제품 필드를 오퍼링에 대량으로 할당하는 경우에 특히 그렇습니다.
단계별 지침
시작하기 전에
- 사용자 지정 옵션인 Magento에 새 필드를 추가하는 방법에 대한 기사를 읽으십시오. 여기에서 사용할 수 있습니다.
APO에 Magento 2 사용자 정의 필드를 추가한 언급된 블로그 게시물의 예를 사용하고 수정할 것입니다.
1 단계. 클래스 재작성
템플릿용으로 생성된 테이블은 필요한 모든 속성을 핵심 Magento 테이블로 저장합니다.
Magento가 제품 옵션 또는 옵션 또는 해당 값의 속성에 사용자 정의 필드를 추가할 때 이 고급 사용자 정의 필드를 템플릿에 바로 추가해야 합니다. 템플릿에서 사용하지 않으려면.
이를 위해 기본 Option_Base 모듈에 맞춤형 `app/code/MageWorx/OptionBase/Model/Installer.php` 설치 프로그램을 만들었습니다.
이 설치 프로그램을 사용하면 Magento가 옵션, 옵션 값 및 템플릿에 대한 필드를 더 편리하게 추가할 수 있습니다.
app/code/VendorName/OptionGtin/Setup/InstallSchema.php
에서 필수 필드의 스키마를 생성한 이전 예제와 달리 이 클래스를 다시 작성하고 사용자 지정 설치 프로그램에 연결을 추가해야 합니다.
<?php namespace VendorName\OptionGtin\Setup; use Magento\Framework\Setup\InstallSchemaInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\SchemaSetupInterface; /** * @codeCoverageIgnore */ class InstallSchema implements InstallSchemaInterface { /** * @var \MageWorx\OptionBase\Model\Installer */ protected $optionBaseInstaller; /** * @param \MageWorx\OptionBase\Model\Installer $optionBaseInstaller */ public function __construct( \MageWorx\OptionBase\Model\Installer $optionBaseInstaller ) { $this->optionBaseInstaller = $optionBaseInstaller; } /** * {@inheritdoc} * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function install(SchemaSetupInterface $setup, ModuleContextInterface $context) { $installer = $setup; $installer->startSetup(); $this->optionBaseInstaller->install(); $installer->endSetup(); } }
2단계. 의존성 주입 재작성
다음으로 '종속성 주입'을 다시 작성하고 사용자 지정 설치 프로그램을 추가하여 'app/code/VendorName/OptionGtin/etc/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"> <!-- Data --> <type name="MageWorx\OptionBase\Model\Product\Option\Attributes"> <arguments> <argument name="data" xsi:type="array"> <item name="gtin" xsi:type="object">VendorName\OptionGtin\Model\Attribute\Option\Gtin</item> </argument> </arguments> </type> <!-- Installation --> <type name="MageWorx\OptionBase\Model\Installer"> <arguments> <argument name="installSchema" xsi:type="array"> <item name="option_gtin_install_schema_data" xsi:type="object">VendorName\OptionGtin\Model\InstallSchema</item> </argument> </arguments> </type> </config>
3단계. 새로운 클래스 생성
`app/code/VendorName/OptionGtin/Setup/InstallSchema.php`에 있던 필수 필드의 스키마를 포함하는 클래스를 생성할 차례입니다.
다음 코드를 사용하여 `app/code/VendorName/OptionGtin/Model/InstallSchema.php` 클래스를 만듭니다.
<?php namespace VendorName\OptionGtin\Model; use Magento\Framework\DB\Ddl\Table; class InstallSchema implements \MageWorx\OptionBase\Api\InstallSchemaInterface { /** * Get module table prefix * * @return string */ public function getModuleTablePrefix() { return ''; } /** * Retrieve module fields data array * * @return array */ public function getData() { $dataArray = [ [ 'table_name' => 'catalog_product_option', 'field_name' => 'gtin', 'params' => [ 'type' => Table::TYPE_INTEGER, 'unsigned' => true, 'nullable' => false, 'comment' => 'Option gtin', ] ], ]; return $dataArray; } /** * Retrieve module indexes data array * * @return array */ public function getIndexes() { return []; } /** * Retrieve module foreign keys data array * * @return array */ public function getForeignKeys() { return []; } }
4단계. 버전 증가
`catalog_product_option` 테이블에 `gtin` 필드가 있는 OptionGtin 모듈이 이미 설치되어 있으므로 하나의 클래스를 만들고 확장 버전을 늘려야 합니다.
설치를 다시 한 번 실행하고 필수 템플릿에 대한 `gtin` 필드 설치를 완료하려면 버전을 높여야 합니다.
`app/code/VendorName/OptionGtin/Setup/UpgradeSchema.php`
<?php namespace VendorName\OptionGtin\Setup; use Magento\Framework\Setup\UpgradeSchemaInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\SchemaSetupInterface; use MageWorx\OptionFeatures\Model\OptionDescription; use MageWorx\OptionFeatures\Model\OptionTypeDescription; use MageWorx\OptionFeatures\Model\Image; use MageWorx\OptionFeatures\Model\OptionTypeIsDefault; class UpgradeSchema implements UpgradeSchemaInterface { /** * @var \MageWorx\OptionBase\Model\Installer */ protected $optionBaseInstaller; /** * @var SchemaSetupInterface */ protected $setup; /** * UpgradeSchema constructor. * * @param \MageWorx\OptionBase\Model\Installer $optionBaseInstaller */ public function __construct( \MageWorx\OptionBase\Model\Installer $optionBaseInstaller ) { $this->optionBaseInstaller = $optionBaseInstaller; } /** * {@inheritdoc} */ public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context) { $this->setup = $setup; $this->optionBaseInstaller->install(); } }
이제 모듈의 버전을 높이십시오.
`앱/코드/공급업체 이름/OptionGtin/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_OptionGtin" setup_version="1.0.1"> <sequence> <module name="Magento_Catalog"/> <module name="MageWorx_OptionBase"/> <module name="MageWorx_OptionFeatures"/> </sequence> </module> </config>
5단계. 종악장
모든 힘든 작업이 끝났습니다. 남은 것은 `bin/magento setup:upgrade` 설치 명령을 실행하고 해당 템플릿 테이블에 필드가 작성되었는지 확인하는 것뿐입니다.
우리의 경우 `mageorx_optiontemplates_group_option` 테이블입니다.
요약
고급 제품 옵션 사용자 정의 가능성을 높이는 데 전념하는 일련의 기사가 유용하기를 바랍니다.
이제 템플릿에 사용자 정의 필드를 추가하고 Magento 2에서 제품 옵션 템플릿을 최대한 활용하는 방법을 알게 되었습니다.
고급 제품 옵션 확장에서 특정 사용자 정의 가능성이 누락된 경우 [email protected] 에서 요청을 제출하십시오. 최선을 다해 도와드리겠습니다!