回答:
私はこれを試していませんが、可能だと思います。正確なコードはありませんが、本当に必要な場合は、空き時間があるときに後で提供することができます。このアプローチは非常に簡単です。
製品と顧客グループごとの割引catalogrule_product
を格納するというテーブルがありCatalog Price Rules
ます。に変更を加えるたびに、このテーブルにインデックスを付ける必要があることに注意してくださいCatalog Price Rules
。これを行うには、インデクサーを使用するか、このページの[ルールを適用]をクリックします(多くの製品を使用している場合、これには時間がかかる場合があります)。
カタログ(または任意の)ページにある特定の製品について、entity_id
それを取得して調べますcatalogrule_product.product_id
。必ず確認してくださいcustomer_group_id
。探している行が見つかると、この行にはタイムスタンプ(秒単位)がfrom_time
ありto_time
、指定された適用ルール(rule_id
)があります。
ルールについてさらに情報が必要な場合は、それrow_id
を入手して調べてくださいcatalogrule
。あなたが見つけたエントリーにはとcatalogrule
がfrom_date
ありto_date
、それらはあなたが望むものを計算するために必要なすべてです。
これがこの場合に私のために働いたコードです...
物事をソートするための1つの関数を作成しました。
function getCatalogSalePrice($_product)
{
$productId = $_product->getId();
$storeId = $_product->getStoreId();
$websiteId = Mage::app()->getStore($storeId)->getWebsiteId();
$timeStamp = Mage::app()->getLocale()->storeTimeStamp($storeId);
$customerGroupId = 1;
$resource = Mage::getResourceModel('catalogrule/rule');
$rules = $resource->getRulesFromProduct($timeStamp, $websiteId, $customerGroupId, $productId);
foreach($rules as $ruleval)
{
$catalogRuleID = $ruleval['rule_id']; //If more than one rule
if($catalogRuleID)
{
$catalogRulObj = Mage::getModel('catalogrule/rule')->load($catalogRuleID);
$conditions_serialized = unserialize($catalogRulObj->getConditionsSerialized());
$actions_serialized = unserialize($catalogRulObj->getActionsSerialized());
$ruleToDate = $catalogRulObj->getToDate();
}
}
$now = time(); // or your date as well
$saleEndDate = strtotime($ruleToDate);
$datediff = $now - $saleEndDate;
$datediff = floor($datediff / (60 * 60 * 24));
if($datediff <= 0)
{
if($datediff < 0) {
$message = abs($datediff). " Days Left";
}
else
{
$message = "Few Hours Left";
}
}
return $message;
}
うまくいけば乾杯。