আইটেম এবং অর্ডার আইটেম উদ্ধৃত পণ্য গুণাবলী


25

কোনও আইটেমের উদ্ধৃতি দিতে এবং তারপরে অবশেষে আইটেমটি অর্ডার করতে কোনও পণ্য বৈশিষ্ট্য স্বয়ংক্রিয়ভাবে চালিয়ে যেতে ম্যাগান্টোর সঠিক উপায় কী?

এটি কি একটি সামান্য কনফিগার এক্সএমএল হিসাবে সহজ বা এটি একটি ম্যানুয়াল প্রক্রিয়া ঘটনা সংরক্ষণ করার আগে এবং এর আগে তাকিয়ে আছে?

উত্তর:


21

একটি উপায় হ'ল পর্যবেক্ষক এবং একটি রূপান্তরকারী ব্যবহার করা।

পর্যবেক্ষকটি পণ্য থেকে উদ্ধৃতিতে ('টেস্ট' নামক একটি গুণাবলী ব্যবহার করে) হিসাবে বিশিষ্টতা অর্জন করবে এবং রূপান্তরকারীটি উদ্ধৃতি থেকে ক্রমের কাছে বৈশিষ্ট্যটি পাবে।

আপনার কনফিগারেশনে:

<global>
    <fieldsets>
        <sales_convert_quote_item>
            <test>
                <to_order_item>*</to_order_item>
            </test>
        </sales_convert_quote_item>
    </fieldsets>

    <sales>
        <quote>
            <item>
                <product_attributes>
                    <test />
                </product_attributes>
            </item>
        </quote>
    </sales>

    <events>
        <sales_quote_item_set_product>
            <observers>
                <YOUR_MODULE>
                    <class>YOUR_MODULE/observer</class>
                    <method>setTestAttribute</method>
                </YOUR_MODULE>
            </observers>
        </sales_quote_item_set_product>
    </events>
</global>

আপনার পর্যবেক্ষক:

public function setTestAttribute(Varien_Event_Observer $observer) {

    $item = $observer->getQuoteItem();
    $product = $observer->getProduct();
    $item->setTest($product->getTest());
    return $this;
}

1
সুন্দরভাবে সম্পন্ন!!!.
ফিলউইঙ্কল

6
ভবিষ্যতের গুগলদের জন্য একটি সতর্কতা: এটি পরীক্ষার আগে ম্যানুয়ালি আপনার ক্যাশে ফোল্ডারটি মুছুন। আমি এই উত্তরে বিভিন্ন প্রকরণের পরীক্ষা করতে, ব্যাকএন্ডের মাধ্যমে সূচি এবং ক্যাশে সাফ করে অনেক ঘন্টা ব্যয় করেছি। আমি যাই যাই করুক না কেন, কাস্টম বৈশিষ্ট্যগুলি ডিবিতে সংরক্ষণ করা যায় নি, উদ্ধৃতি_রাইটামের শিরোনাম পরিবর্তন করে তবে ভাল কাজ করেছে। তবুও আমি / var / cache মুছে ফেলে ম্যানুয়ালি ক্যাশে সাফ করেছি ... ক্রেজি!
মরিস

আমি ব্যাকএন্ড প্যানেলে এই কাস্টম বৈশিষ্ট্যটি পাশাপাশি বিক্রয় অর্ডার বিশদ পৃষ্ঠাতে স্কুর পাশে চাই। দয়া করে পরামর্শ দিন, কীভাবে অ্যাকাইভ করবেন?
ইনসারৌরভ

21

এটি পর্যবেক্ষক এবং কনফিগার.এক্সএমএল সম্পর্কিত আপনার জ্ঞানকে একত্রিত করে করা হয়। কনফিগার.এক্সএমএল কোট আইটেমটিতে একটি কাস্টম অ্যাট্রিবিউট সংজ্ঞা প্রদানের ব্যবস্থা করবে এবং একটি পর্যবেক্ষক একটি উদ্ধৃতিতে যুক্ত হওয়ার পরে পণ্যটির বৈশিষ্ট্যটি উদ্ধৃতিতে সংরক্ষণ করবে।

সেখান থেকে, আপনি config.xml ব্যবহার fieldset সংজ্ঞা, যা থেকে রূপান্তর হ্যান্ডেল করা হবে ডাকতে quote_itemকরতে order_item

সম্পূর্ণ প্রকাশ: নীচের বিষয়বস্তুটি অ্যাটুইক্সের। উত্তরের নীচে লিঙ্ক।

প্রথমে আপনার sales->quote->item->product_attributesনোডে কাস্টম বৈশিষ্ট্য যুক্ত করা উচিত :

<sales>
    <quote>
        <item>
            <product_attributes>
                <custom_attribute />
            </product_attributes>
        </item>
    </quote>
</sales>

এটি বৈশিষ্ট্যটি অ্যাক্সেসযোগ্য করে তোলে যখন আমরা পণ্য থেকে উদ্ধৃতি করে আইটেমটি অনুলিপি করব - যা আমাদের পরবর্তী পদক্ষেপ। এই কাজের জন্য পর্যবেক্ষক ব্যবহৃত হয়, এবং ইভেন্টটি ডাকা হবে sales_quote_item_set_product:

<sales_quote_item_set_product>
    <observers>
        <yourmodule_customattribute>
            <class>yourmodule_customattribute/observer</class>
            <method>salesQuoteItemSetCustomAttribute</method>
        </yourmodule_customattribute>
    </observers>
</sales_quote_item_set_product>

অবজারভার:

public function salesQuoteItemSetCustomAttribute($observer)
{
    $quoteItem = $observer->getQuoteItem();
    $product = $observer->getProduct();
    $quoteItem->setCustomAttribute($product->getCustomAttribute());
}

আমাদের শেষ জিনিসটির যত্ন নেওয়া দরকার - এটি থেকে অ্যাট্রিবিউটকে রূপান্তরquote_item করা হচ্ছে order_item। এবং এটি এক্সএমএল দিয়ে করা যেতে পারে:

<fieldsets>
    <sales_convert_quote_item>
        <custom_attribute>
            <to_order_item>*</to_order_item>
        </custom_attribute>
    </sales_convert_quote_item>
    <sales_convert_order_item>
        <custom_attribute>
            <to_quote_item>*</to_quote_item>
        </custom_attribute>
    </sales_convert_order_item>
</fieldsets>

সূত্র: অ্যাটউইক্স (যিনি পুরোপুরি জিতেছেন): http://www.atwix.com


2
+1 টি। আমি নিজেকে +1 করেছি বলে মনে হচ্ছে। আমি যখন অনুরূপ কিছু ভেরি জমা দেওয়ার কথা বলছিলাম তখন একটি বার্তা উপস্থিত হয়েছিল: 'এই প্রশ্নের নতুন উত্তর আছে'। সুতরাং +1 কারণ আপনি দ্রুত টাইপ করেন :)
মারিউস

হাহাহাহা - সত্যিই এটি অ্যাটিক্স।
ফিলউইঙ্কল

@ ফিলউইঙ্কল, উপরেরটি ভাল কাজ করে তবে ধরে নিন আপনার কাস্টম বৈশিষ্ট্যটি কোটির উপর নির্ভর করে পণ্য পয়েন্ট। যদি প্রো এ এর ​​50 পয়েন্ট এবং 2 কোটির পরিমাণ থাকে তবে মোট পয়েন্টগুলি 50 * 2 = 100 হওয়া উচিত। আমি উদ্ধৃতি আইটেমের 100পরিবর্তে কীভাবে মান সেট করব 50? যদি বৈশিষ্ট্যটির মান আপডেট হয়, তবে আমি কীভাবে সেই আপডেট হওয়া মানটি সংরক্ষণ করব এবং প্রশাসকের এক সেট নয়
স্লিমশাদ্দেদী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.