ফ্লাইতে কাস্টম বিকল্পগুলি যুক্ত করতে অ্যাপোপিয়েট ইভেন্টটি হ'ল catalog_product_type_prepare_full_options
, যা পণ্যটির কাস্টম বিকল্পগুলির সাথে একটি উদ্ধৃতি আইটেমে রূপান্তরিত হওয়ার ঠিক আগে ট্রিগার করা হয়।
নিজস্ব বায়ারউয়েস্ট ডেটাতে পণ্যের বৈশিষ্ট্য বা বিকল্পগুলির উপর প্রভাব থাকতে হবে, ইভেন্টের একজন পর্যবেক্ষক catalog_product_type_prepare_{$processMode}_options
ভাল পছন্দ, যেখানে $processMode
বৈধতা মোড এবং এটি "পূর্ণ" বা "লাইট" হতে পারে। "পূর্ণ" মোডটি ব্যবহৃত হয় যখন কোনও পণ্য নিয়মিত কার্টে যুক্ত হয় এবং প্রয়োজনীয় সমস্ত বিকল্পগুলি সেট করা থাকলে এবং পুরো কনফিগারেশনটি বৈধ কিনা তা যাচাই করে। "লাইট" মোডে কেবল অনুরোধের মধ্যে থাকা বিকল্পগুলি বৈধ হয়, ইচ্ছামত তালিকায় কোনও পণ্য যুক্ত করার সময় এটি ব্যবহৃত হয়, তবে ব্যাকএন্ড থেকে অর্ডার তৈরি করার সময় এটিও সম্ভব। যে কোনও ক্ষেত্রে ডেটা প্রক্রিয়া করতে আপনি উভয় ইভেন্টের জন্য পর্যবেক্ষককে নিবন্ধভুক্ত করতে পারেন। যদি কোনও বৈধতা থাকে তবে অবশ্যই আপনার অবশ্যই ইভেন্টগুলির মধ্যে পার্থক্য করা উচিত।
ইভেন্টগুলি ম্যাজ_গ্লাগল_মোডেল_প্রডাক্ট_টাইপ_ অ্যাবস্ট্র্যাক্ট :: _ রেডিপোশন () প্রস্তুত করে এবং নিম্নলিখিত প্যারামিটারগুলি উপলভ্য:
transport
: সমস্ত কাস্টম বিকল্পের জন্য পরিবহণ অবজেক্ট (তবে অন্য কোনও বিকল্প নয়, উদাহরণস্বরূপ বান্ডিল বিকল্পগুলি), যাতে আপনি সেগুলি পর্যবেক্ষকগুলিতে পরিবর্তন করতে পারেন। পরিবহন-> বিকল্পগুলি বিকল্প_আইডি => বিকল্প_মূল্যে ফর্মের একটি অ্যারে। মনোযোগ দিন, পরিবহন নিজেই একটি stdClass অবজেক্ট, ভ্যারেন_অবজেক্টের উদাহরণ নয়, যেমনটি আপনি আশা করতে পারেন। সুতরাং পরিবহন-> বিকল্পগুলির জন্য কোনও গেটর এবং সেটার পদ্ধতি নেই।
buy_request
: বায়ারেক্সট অবজেক্ট, আপনি এটি এখানে পড়তে পারেন এবং এখনও এটি পরিবর্তন করতে পারেন।
product
: পরে যে পণ্যটি একটি উদ্ধৃতি আইটেমে রূপান্তরিত হবে। এখানে আপনি বৈশিষ্ট্যগুলি পরিচালনা করতে পারেন বা এগুলি গতিশীলভাবে যুক্ত করতে পারেন। তবে রূপান্তর প্রক্রিয়াতে আপনার এখনও তাদের বিবেচনা করা দরকার। এর জন্য ব্যবহৃত ইভেন্টটি sales_quote_product_add_after
, কেবল পরে ট্রিগার করা হবে।
উত্স: দ্য ম্যাজেন্টো বায়ার্কেস্ট অবজেক্ট - একটি রেফারেন্স
সুতরাং কোনও পর্যবেক্ষক এর মতো দেখতে পাবেন:
public function addCustomOption(Varien_Event_Observer $observer)
{
$transport = $observer->getTransport();
if (this_item_should_be_free()) { // implement your condition here
$transport->options['Free Gifts'] = 'Spend $50 and get gift product worth $9.99';
}
}
আপনি এই গতিশীলভাবে যুক্ত কাস্টম বিকল্পের জন্য মূল্য নির্ধারণ করতে পারবেন না, তবে আপনি দ্বিতীয় পর্যবেক্ষককে এর catalog_product_get_final_price
মতো ব্যবহার করে উদ্ধৃতি আইটেমের দাম পরিবর্তন করতে পারেন :
public function adjustFinalPrice($observer) {
$product = $observer->getProduct();
// Set price to "0" if custom option "Free Gift" has been set
if ($product->getCustomOption('Free Gift')) {
$product->setFinalPrice(0);
}
}