Magento 2: Ürün Seçeneği Şablonlarına Özel Alan Ekleme

Yayınlanan: 2021-02-04

Gelişmiş Ürün Seçenekleri uzantısı, yalnızca ürün sayfalarındaki seçeneklerle ilgilenmenize değil, çeşitli seçenek şablonları oluşturmanıza ve bunları belirli ürünlere toplu olarak atamanıza olanak tanır.

Bu makale, Gelişmiş Ürün Seçenekleri (APO) en iyi uygulamaları ve standartlarına uygun olarak seçenekler ve seçenek şablonları için özel Magento alanları ekleme konusunda adım adım yönergeler sağlar.

İçindekiler

  • Gelişmiş Özel Alanlar nedir?
  • Adım Adım Yönergeler
    • Başlamadan Önce
    • Aşama 1. Sınıf Yeniden Yazma
    • Adım # 2. Bağımlılık Enjeksiyonu Yeniden Yazma
    • Aşama 3. Yeni Sınıf Oluşturma
    • 4. Adım. Sürüm Artışı
    • Adım 5. final
  • Özet

Gelişmiş Özel Alanlar nedir?

Gelişmiş Ürün Seçenekleri uzantısı, çok yönlü olanaklar sunmak için oluşturuldu. Ancak, her işletme farklı ve farklı olduğundan, tek seferlik hedefleri tamamlamak için özelleştirme gerekebilir. Bu, özellikle seçenek şablonları ve tekliflerinize eklenen gelişmiş ürün alanları toplu olarak atandığında geçerlidir.

Adım Adım Yönergeler

Başlamadan Önce

  • Özel seçenek olan Magento'da yeni bir alanın nasıl ekleneceğiyle ilgili makaleyi okuyun. Burada mevcut.

APO'ya bir Magento 2 özel alanı eklediğimiz söz konusu blog gönderisindeki örneği kullanacağız ve değiştireceğiz.

Magento ürün seçenekleri

Aşama 1. Sınıf Yeniden Yazma

Şablonlar için oluşturulan tablolar, gerekli tüm öznitelikleri çekirdek Magento tabloları olarak saklar.

Magento, bir seçenek veya onun değerleri için ürün seçeneğine veya niteliğine özel bir alan eklediğimizde, bu gelişmiş özel alanı hemen şablonlara eklememiz gerekir. Şablonlarda kullanmayı düşünmüyorsanız.

Bu amaçla, ana Option_Base modülümüzde özel `app/code/MageWorx/OptionBase/Model/Installer.php` yükleyicisini oluşturduk.

Bu yükleyici, Magento'ya seçenekler, seçenek değerleri ve şablonlar için alanları daha rahat bir şekilde eklemenize yardımcı olur.

app/code/VendorName/OptionGtin/Setup/InstallSchema.php içinde gerekli alanın şemasını oluşturduğumuz önceki örnekten farklı olarak, bu sınıfı yeniden yazmamız ve özel yükleyicimize bir bağlantı eklememiz gerekecek:

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

Adım # 2. Bağımlılık Enjeksiyonu Yeniden Yazma

Ardından, özel yükleyicimizi ekleyerek "dependency injection"u yeniden yazalım ve "app/code/VendorName/OptionGtin/etc/di.xml" öğesini değiştirelim:

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

Aşama 3. Yeni Sınıf Oluşturma

`app/code/VendorName/OptionGtin/Setup/InstallSchema.php` içinde bulunan gerekli alanların şemalarını içeren bir sınıf oluşturma zamanı.

`app/code/VendorName/OptionGtin/Model/InstallSchema.php` sınıfını aşağıdaki kodla oluşturun:

 <?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. Adım. Sürüm Artışı

'catalog_product_option' tablosunda 'gtin' alanına sahip OptionGtin modülünü zaten kurmuş olduğumuz için, onun bir sınıfını oluşturmanız ve uzantının sürümünü arttırmanız gerekiyor.

Kurulumu bir kez daha çalıştırmak ve gerekli şablonlar tablosuna `gtin` alan kurulumunu bitirmek için sürüm artışına ihtiyacımız var.

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

Şimdi, modülün sürümünü artırın:

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

Adım 5. final

Tüm zor iş bitti. Geriye kalan tek şey `bin/magento setup:upgrade` kurulum komutunu çalıştırmak ve alanımızın ilgili şablonlar tablosunda yazılı olduğunu kontrol etmektir.

Bizim durumumuzda bu, `mageworx_optiontemplates_group_option` tablosudur.

şablona önceden özel alan ekle

Özet

Gelişmiş Ürün Seçenekleri özelleştirilebilirliğini artırmaya yönelik makale dizimizi yararlı bulacağınızı umuyoruz.

Artık şablona nasıl özel alan ekleyeceğinizi ve Magento 2'deki ürün seçeneği şablonlarından en iyi şekilde nasıl yararlanacağınızı biliyorsunuz.

Gelişmiş Ürün Seçenekleri uzantısında belirli özelleştirme olanaklarını kaçırıyorsanız, lütfen [email protected] adresinden bir istek gönderin. Size yardımcı olmak için elimizden geleni yapacağız!

magento 2 bağımlı özel seçenekler

Mageworx ile Canlı Demo Rezervasyonu Yapın