تحقق مما إذا كان المنتج يحتوي على قاعدة أسعار الكتالوج

magento.stackexchange https://magento.stackexchange.com//questions/89417

سؤال

أحتاج إلى التحقق مما إذا كان المنتج يحتوي على قاعدة أسعار للكتالوج، وإذا كان لديه، فإنه يحتاج إلى عرض قسم محدد.

لذلك أحتاج إلى شيء مثل:

<?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
}

ولكن هذه ليست أفضل الممارسات.

نصائح أخرى

السؤال القديم، ولكن بالنسبة للآخرين يبحثون، يبدو أن هذه طريقة فعالة:

giveacodicetagpre.

شاهد mage_catalogle_model_Rule للرجوع إليها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top