製品がカタログ価格のルールを持っているかどうかを確認してください
-
13-12-2019 - |
質問
製品にカタログ価格ルールがあるかどうかを確認する必要があり、それが持っている場合は特定のDIVを表示する必要があります。
だから私は何かが必要です:
<?php if catalog price rule : ?>
<div>
Text
</div>
<?php endif; ?>
.
どのようにそれを達成することができますか?
解決
あなたがこれを試すことができるルールや多くの製品が多い場合:
$website = Mage::app()->getWebsite();
$product = $this->getProduct();
$rules = Mage::getModel('catalogrule/rule')->getCollection()
->addWebsiteFilter($website) //filter rules for current site
->addIsActiveFilter(1); //filter active rules
foreach ($rules as $rule) {
$affectedProductIds = $rule->getMatchingProductIds();
if (in_array($product->getId(), $affectedProductIds)) {
//product has a price rule set for it
}
}
.
迅速で汚れたアイデアは、表catalogrule_product
のレコードを検索することです。
カタログ規則の影響を受けるすべての製品はその表で参照されています。
$resource = Mage::getSingleton('core/resource');
$connection = $resource->getConnection('core_read');
$tableName = $resource->getTableName('catalogrule_product');
$count = $connection->fetchOne('SELECT COUNT(1) as c FROM '.$tableName.' WHERE product_id = '. $product->getId());
if ($count == 1) {
//you have a rule for the product
}
.
しかしこれはベストプラクティスではありません。
他のヒント
古い質問、しかし他の人のために見て、これは効率的な方法のようです:
$product = $this->getProduct();
Mage::getModel('catalogrule/rule')->loadProductRules($product);
var_dump($product->getMatchedRules());
.
参照のMAGE_CATALOGRUE_MODEL_RULEを参照してください。
所属していません magento.stackexchange