আপনার উদাহরণটি "ব্যবহারের কনফিগারেশন" এর জন্য অ্যাকাউন্টটি গ্রহণ করে না।
কীভাবে addInStockFilterToCollection
কাজ করে তা একবার দেখে নেওয়া যাক :
public function addInStockFilterToCollection($collection)
{
$this->getResource()->setInStockFilterToCollection($collection);
return $this;
}
ঠিক আছে, এটি অন্য পদ্ধতিতে প্রতিনিধিত্ব করছে:
public function setInStockFilterToCollection($collection)
{
$manageStock = Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK);
$cond = array(
'{{table}}.use_config_manage_stock = 0 AND {{table}}.manage_stock=1 AND {{table}}.is_in_stock=1',
'{{table}}.use_config_manage_stock = 0 AND {{table}}.manage_stock=0',
);
if ($manageStock) {
$cond[] = '{{table}}.use_config_manage_stock = 1 AND {{table}}.is_in_stock=1';
} else {
$cond[] = '{{table}}.use_config_manage_stock = 1';
}
$collection->joinField(
'inventory_in_stock',
'cataloginventory/stock_item',
'is_in_stock',
'product_id=entity_id',
'(' . join(') OR (', $cond) . ')'
);
return $this;
}
এটি নিম্নলিখিত শর্তের সাথে জায় তালিকাতে যোগ দেয়:
পণ্যটি বিশ্বব্যাপী কনফিগারেশন ব্যবহার করে না এবং "হ্যাঁ" এ সেট করে "স্টক পরিচালনা" করে এবং স্টকটিতে রয়েছে
অথবা
পণ্য বিশ্বব্যাপী কনফিগারেশন ব্যবহার করে না এবং "স্টক পরিচালনা" "" না "এ সেট করেছে
অথবা
- পণ্য বিশ্বব্যাপী কনফিগারেশন ব্যবহার করে এবং যদি বিশ্বব্যাপী কনফিগারেশনটি "মজুদ করুন = হ্যাঁ" পরিচালনা করে থাকে তবে তা মজুদ থাকে
আপনাকে শর্তগুলি উল্টাতে হবে:
পণ্যটি বিশ্বব্যাপী কনফিগারেশন ব্যবহার করে না এবং "হ্যাঁ" এ সেট করে "স্টক পরিচালনা" করে এবং স্টকটিতে নেই
অথবা
পণ্য বিশ্বব্যাপী কনফিগারেশন ব্যবহার করে এবং বিশ্বব্যাপী কনফিগারেশন হ'ল "স্টক = হ্যাঁ পরিচালনা করুন" এবং স্টকের মধ্যে নেই
ব্যাখ্যা: আপনি কেবলমাত্র শর্তাদি গ্রহণ করেন যেখানে ইন_স্টকটি প্রকৃতভাবে পরীক্ষা করা হয় এবং তুলনাটি 0 এর সাথে পরিবর্তন করেন _ শর্তাদি যেখানে ইন_স্টক চেক করা হয় না ("স্টক পরিচালনা করুন" = "না") এর অর্থ হ'ল স্টক স্থিতি ছাড়াই পণ্য সর্বদা স্টক থাকে , সুতরাং আমরা তাদের আমাদের "স্টক আউট" কোয়েরিতে অন্তর্ভুক্ত করি না।
তাহলে এটি আপনার কোড:
public function setOutOfStockFilterToCollection($collection)
{
$manageStock = Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK);
$cond = array(
'{{table}}.use_config_manage_stock = 0 AND {{table}}.manage_stock=1 AND {{table}}.is_in_stock=0'
);
if ($manageStock) {
$cond[] = '{{table}}.use_config_manage_stock = 1 AND {{table}}.is_in_stock=0';
}
$collection->joinField(
'inventory_in_stock',
'cataloginventory/stock_item',
'is_in_stock',
'product_id=entity_id',
'(' . join(') OR (', $cond) . ')'
);
return $this;
}