Magento 2: Adăugați câmp personalizat la șabloanele de opțiuni de produs

Publicat: 2021-02-04

Extensia Advanced Product Options vă permite să vă ocupați nu numai de opțiunile de pe paginile de produse, ci și să creați diverse șabloane de opțiuni și să le atribuiți în masă anumitor produse.

Acest articol vă oferă instrucțiuni pas cu pas despre adăugarea câmpurilor personalizate Magento pentru opțiuni și șabloane de opțiuni în conformitate cu cele mai bune practici și standarde APO (Advanced Product Options).

Cuprins

  • Ce sunt câmpurile personalizate avansate?
  • Ghid pas cu pas
    • Înainte de a începe
    • Pasul 1. Rescrierea clasei
    • Pasul # 2. Rescrierea prin injecție de dependență
    • Pasul 3. Crearea unei noi clase
    • Pasul #4. Creșterea versiunii
    • Pasul #5. Final
  • Recapitulare

Ce sunt câmpurile personalizate avansate?

Extensia Advanced Product Options a fost creată pentru a oferi posibilități versatile. Cu toate acestea, deoarece fiecare afacere este diferită și distinctă, personalizarea poate fi necesară pentru a completa obiectivele unice. Acesta este mai ales cazul când se atribuie în masă șabloanele de opțiuni și câmpurile de produse avansate adăugate la ofertele dvs.

Ghid pas cu pas

Înainte de a începe

  • Citiți articolul despre cum să adăugați un câmp nou în opțiunea personalizată, Magento. Este disponibil aici.

Vom folosi și modifica exemplul din postarea de blog menționată, unde am adăugat un câmp personalizat Magento 2 la APO.

Opțiuni de produse Magento

Pasul 1. Rescrierea clasei

Tabelele care sunt create pentru șabloane stochează toate atributele necesare ca tabele Magento de bază.

Când Magento adăugăm un câmp personalizat la opțiunea de produs sau un atribut pentru o opțiune sau valorile acestuia, este, de asemenea, necesar să adăugăm imediat acest câmp personalizat avansat la șabloane. Cu excepția cazului în care nu intenționați să-l utilizați în șabloane.

În acest scop, am creat programul de instalare personalizat `app/code/MageWorx/OptionBase/Model/Installer.php` în modulul nostru principal Option_Base.

Acest program de instalare vă ajută să adăugați mai convenabil câmpuri pentru opțiuni, valori ale opțiunilor și șabloane Magento.

Spre deosebire de exemplul anterior în care am creat o schemă a câmpului necesar în app/code/VendorName/OptionGtin/Setup/InstallSchema.php , va trebui să rescriem această clasă și să adăugăm o conexiune la programul nostru de instalare personalizat:

 <?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(); } }

Pasul # 2. Rescrierea prin injecție de dependență

Apoi, să rescriem „injecția de dependență” și să schimbăm „app/code/VendorName/OptionGtin/etc/di.xml” adăugând programul nostru de instalare personalizat:

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

Pasul 3. Crearea unei noi clase

Este timpul să creați o clasă care să conțină scheme ale câmpurilor obligatorii care obișnuiau să fie localizate în `app/code/VendorName/OptionGtin/Setup/InstallSchema.php`.

Creați clasa `app/code/VendorName/OptionGtin/Model/InstallSchema.php` cu următorul cod:

 <?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 []; } }

Pasul #4. Creșterea versiunii

Deoarece avem deja instalat modulul OptionGtin cu câmpul `gtin` din tabelul `catalog_product_option`, este necesar să creăm o singură clasă și să creștem versiunea extensiei.

Avem nevoie de creșterea versiunii pentru a rula încă o dată instalarea și pentru a finaliza instalarea câmpului `gtin` în tabelul de șabloane necesare.

`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(); } }

Acum, măriți versiunea modulului:

`app/code/VendorName/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>

Pasul #5. Final

Toată munca grea s-a terminat. Singurul lucru rămas este să rulați comanda de instalare `bin/magento setup:upgrade` și să verificați dacă câmpul nostru este scris în tabelul de șabloane corespunzătoare.

În cazul nostru, este tabelul `mageworx_optiontemplates_group_option`.

adăugați câmp personalizat în avans la șablon

Recapitulare

Sperăm că veți găsi utilă seria noastră de articole dedicate creșterii opțiunilor avansate de personalizare a produsului.

Acum, știți cum să adăugați un câmp personalizat șablonului și să utilizați cât mai bine șabloanele de opțiuni de produs din Magento 2.

Dacă vă lipsesc posibilități specifice de personalizare din extensia Opțiuni avansate de produs, vă rugăm să trimiteți o solicitare la [email protected] . Vom face tot posibilul pentru a vă ajuta!

opțiuni personalizate dependente de magento 2

Rezervați o demonstrație live cu Mageworx