Magento 2: إضافة حقل مخصص إلى قوالب خيارات المنتج

نشرت: 2021-02-04

يسمح لك ملحق Advanced Product Options بالتعامل ليس فقط مع الخيارات على صفحات المنتج ولكن أيضًا لإنشاء قوالب خيارات متنوعة وتخصيصها بالجملة لمنتجات معينة.

توفر لك هذه المقالة إرشادات خطوة بخطوة حول إضافة حقول مخصصة Magento للخيارات وقوالب الخيارات وفقًا لأفضل ممارسات ومعايير خيارات المنتج المتقدمة (APO).

جدول المحتويات

  • ما هي الحقول المخصصة المتقدمة؟
  • إرشادات خطوة بخطوة
    • قبل أن نبدأ
    • الخطوة 1. إعادة كتابة الفصل
    • الخطوة رقم 2. إعادة كتابة حقن التبعية
    • الخطوه 3. إنشاء فئة جديدة
    • الخطوة رقم 4. زيادة الإصدار
    • الخطوة رقم 5. خاتمة
  • خلاصة

ما هي الحقول المخصصة المتقدمة؟

تم إنشاء ملحق Advanced Product Options لتقديم إمكانيات متعددة الاستخدامات. ومع ذلك ، نظرًا لأن كل عمل مختلف ومتميز ، يمكن أن يكون التخصيص مطلوبًا لاستكمال الأهداف لمرة واحدة. هذا هو الحال بشكل خاص عند التعيين الجماعي لقوالب خيارات وحقول المنتج المتقدمة المضافة إلى عروضك.

إرشادات خطوة بخطوة

قبل أن نبدأ

  • اقرأ المقالة حول كيفية إضافة حقل جديد في الخيار المخصص Magento. إنه متاح هنا.

سنستخدم ونعدل المثال من منشور المدونة المذكور ، حيث أضفنا حقل Magento 2 المخصص إلى APO.

خيارات منتج Magento

الخطوة 1. إعادة كتابة الفصل

تخزن الجداول التي تم إنشاؤها للقوالب جميع السمات الضرورية مثل جداول Magento الأساسية.

عندما نضيف Magento حقلاً مخصصًا إلى خيار المنتج أو السمة لخيار أو قيمه ، فمن الضروري أيضًا إضافة هذا الحقل المخصص المتقدم إلى القوالب فورًا. ما لم تكن تنوي استخدامه في القوالب.

لهذا الغرض ، أنشأنا برنامج التثبيت المخصص `app / code / MageWorx / OptionBase / Model / Installer.php` في وحدة Option_Base الرئيسية لدينا.

يساعدك برنامج التثبيت هذا في 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. زيادة الإصدار

نظرًا لأن لدينا بالفعل وحدة OptionGtin المثبتة مع حقل `gtin` في جدول` index_product_option` ، فمن الضروري إنشاء فئة واحدة وزيادة إصدار الامتداد.

نحتاج إلى زيادة الإصدار لتشغيل التثبيت مرة أخرى وإنهاء تثبيت حقل "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(); } }

الآن ، قم بزيادة إصدار الوحدة:

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

الخطوة رقم 5. خاتمة

انتهى كل العمل الشاق. الشيء الوحيد المتبقي هو تشغيل أمر التثبيت "bin / magento setup: Upgrade" والتحقق من كتابة حقلنا في جدول القوالب المقابلة.

في حالتنا ، إنه جدول "mageworx_optiontemplates_group_option".

إضافة حقل مخصص مقدمًا إلى النموذج

خلاصة

نأمل أن تجد سلسلة المقالات المخصصة لزيادة إمكانية تخصيص "خيارات المنتج المتقدمة" مفيدة.

الآن ، أنت تعرف كيفية إضافة حقل مخصص إلى القالب والاستفادة المثلى من قوالب خيارات المنتج في Magento 2.

إذا كنت تفتقد إمكانيات تخصيص معينة في ملحق Advanced Product Options ، فيرجى إرسال طلب على [email protected] . سنبذل قصارى جهدنا لمساعدتك!

الماجنتو 2 خيارات مخصصة تعتمد

احجز عرضًا توضيحيًا مباشرًا مع Mageworx