প্রথমে আমি নিয়ম এবং ইউজারপয়েন্ট মডিউলটি ব্যবহার করে আপনার প্রশ্নের উত্তর দেওয়ার চেষ্টা করেছি , কিন্তু আমি দেখেছি যে কোনও ব্যবহারকারীকে ক্রিয়া হিসাবে গ্রান্ট পয়েন্ট যুক্ত করার সময় পণ্যটি তৈরি করা ব্যবহারকারীর নির্বাচনের জন্য এমন কোনও ডেটা নির্বাচনকারী নেই। অর্ডার মালিক এমন ব্যবহারকারী নির্বাচনের জন্য আমি ডেটা নির্বাচককে পেয়েছি, তবে এটি আপনার প্রয়োজন নয় not (এই কারণেই আমি মন্তব্যগুলিতে এটি স্পষ্ট করেছিলাম)।
আমি আপনার প্রশ্নের একটি মডিউল সমাধান খুঁজে পেয়েছি। মডিউলটি হুক_কমার্স_চেকআউট_ কমপ্লিট () ব্যবহার করে । হুক পৃষ্ঠা থেকে:
যখন কোনও অর্ডার চেকআউট সম্পন্ন করে মডিউলগুলিকে ব্যবসায়ের যুক্তি সম্পাদনের অনুমতি দেয়।
এই হুক "গ্রাহক সম্পূর্ণ চেকআউট" ইভেন্টের সাথে মিলে যায়। অর্ডার স্থিতি আপডেট করা, ব্যবহারকারীর অ্যাকাউন্টে অর্ডার অর্পণ করা, বা বিজ্ঞপ্তি ইমেল প্রেরণ করা যেমন কেবল তখনই ব্যবসায়ের যুক্তি সম্পাদন করা উচিত। পরিবর্তে চেকআউট সমাপ্তির পৃষ্ঠায় চেকআউট প্যানগুলির মাধ্যমে ব্যবহারকারীর সাথে মিথস্ক্রিয়া হওয়া উচিত।
এটি আমি ডিজাইন করা মডিউলটির কোডিং:
আপনার ফাইল ডাউনলোড করুন ফাইল:
name = YOURMODULE
description = Module description
dependencies[] = commerce
dependencies[] = commerce_cart
dependencies[] = commerce_checkout
dependencies[] = userpoints
core = 7.x
আপডেট ক্লাইভের
পরামর্শ অনুসারে , আমি মডিউল ফাইলটি পরিবর্তন করেছি যাতে এই কাস্টম মডিউলটি বহুভাষিক সাইটগুলির সাথেও কাজ করবে।
আপনার ফাইল.মডিউল ফাইল:
/**
* Implements hook_commerce_checkout_complete().
*/
function YOURMODULE_commerce_checkout_complete($order) {
// Iterate through every commerce line item added in product.
foreach (field_get_items('commerce_order', $order, 'commerce_line_items') as $line_item_id) {
// Load commerce line item by line item id.
$line_item = commerce_line_item_load($line_item_id['line_item_id']);
// We do not want to include shipping cost in userpoints.
if ($line_item->type != 'shipping') {
// Load commerce product by product id.
$product = commerce_product_load(field_get_items('commerce_line_item', $line_item, 'commerce_product')[0]['product_id']);
// Create parameters.
$params = array(
'uid' => $product->uid,
'points' => commerce_currency_amount_to_decimal(field_get_items('commerce_line_item', $line_item, 'commerce_total')[0]['amount'], field_get_items('commerce_line_item', $line_item, 'commerce_total')[0]['currency_code']),
);
// Grant userpoints programmatically.
userpoints_userpointsapi($params);
}
}
}
রেফারেন্স লিঙ্ক:
userpoints_userpointsapi ($ প্যারাম)
वाणिज्य_চেকআউট এপিআই
commerce_line_item_load ($ line_item_id)
commerce_product_load ($ PRODUCT_ID)
ইউজারপয়েন্টস: প্রোগ্রামগতভাবে পয়েন্টগুলি বাদ দিন
commerce_currency_amount_to_decimal ()