Mageworx Advanced Product Options التخصيص

نشرت: 2020-06-09

بغض النظر عن مدى قوة الحل ، قد يكون التخصيص مطلوبًا لتحقيق الأهداف أو التفضيلات الخاصة بالعمل.

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

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

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

دليل خطوة بخطوة حول تخصيص خيارات المنتج المتقدمة

هذه هي الطريقة التي تظهر بها حقول " نوع الوزن والوزن " في ملحق "خيارات المنتج المتقدمة" خارج الصندوق:

خيارات التخصيص المتقدمة للمنتج MageWorx | مدونة MageWorx

لعرض هذه الحقول خارج النافذة المشروطة ، ستحتاج إلى اتباع هذه الخطوات الخمس السهلة:

الخطوة 1. إنشاء وحدة جديدة

ابدأ بإنشاء وحدة نمطية جديدة: VendorName_OptionCustomFieldWeight .

من أجل هذا،

  1. قم بإنشاء دليل app/code/VendorName/OptionCustomFieldWeight ،
  2. قم بإنشاء وملء ثلاثة ملفات قياسية تُستخدم عادةً لتسجيل وحدة ، مثل 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

 <?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. تعديل الفئة

الآن ، دعنا نعدل الفصل المنسوخ. للقيام بذلك ، تحتاج إلى:

أ) قم بتغيير 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 { ….

ب) أضف 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; } …..

ج) ابحث عن طريقة 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; }

د) بعد طريقة 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/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

سترى النتيجة التالية:

خيارات التخصيص المتقدمة للمنتج MageWorx | مدونة MageWorx

تهانينا! لقد قمت بإزالة حقلي " نوع الوزن والوزن " من النافذة المشروطة بنجاح.

الحد الأدنى

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

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