問題:Magento的:如何檢索產品的最終價格(以帳戶目錄價格規則等),而從前端的
而在後端Ø的cron任務(例如在定製產品feed生成用戶運行請求或在cron事件中),並且通常不在前端,Mage_Catalog_Model_Product的方法getFinalPrice()返回產品的基本價格,而沒有考慮到,例如適用於該產品的Magento目錄價格規則。
這意味着生成的Feed中導出的價格與Magento前端中顯示的價格不同,這很容易成爲問題。
那麼,如何獲得產品的最終價格如前所示?
問題:Magento的:如何檢索產品的最終價格(以帳戶目錄價格規則等),而從前端的
而在後端Ø的cron任務(例如在定製產品feed生成用戶運行請求或在cron事件中),並且通常不在前端,Mage_Catalog_Model_Product的方法getFinalPrice()返回產品的基本價格,而沒有考慮到,例如適用於該產品的Magento目錄價格規則。
這意味着生成的Feed中導出的價格與Magento前端中顯示的價格不同,這很容易成爲問題。
那麼,如何獲得產品的最終價格如前所示?
SOLUTION
使用一個輔助類,與定義了以下方法:
class My_Package_Helper_Price extends Mage_Core_Helper_Abstract {
private $_init_rule = false;
private function initRuleData($product) {
if ($this->_init_rule || empty($product)) return $this;
$productStore = Mage::getModel('core/store')->load($product->getStoreId());
if (!empty($productStore)) {
Mage::register('rule_data', new Varien_Object(array(
'store_id' => $product->getStoreId(),
'website_id' => $productStore->getWebsiteId(),
'customer_group_id' => 0, // NOT_LOGGED_IN
)));
$this->_init_rule = true;
}
return $this;
}
public function getProductFinalPrice($product) {
$this->initRuleData($product);
return $product->getFinalPrice();
}
}
然後,您可以使用:
Mage::helper('my_package/price')->getProductFinalPrice($product);
其中$產品的加載實例Mage_Catalog_Model_Product類。
由誰問的問題只能在管理員的網站,如果你加入這一行接近頂部的人指出瞭解決方案:
Mage::app()->loadAreaPart(Mage_Core_Model_App_Area::AREA_FRONTEND,Mage_Core_Model_App_Area::PART_EVENTS);
這會將前端事件,發生在帳戶中定義的目錄價格規則在管理員網站上。
希望它可以幫助未來的人。
這是很好的解決方案!謝謝 – bla0009