2014-07-20 5 views
0

간단한 제품이 특정 범주에 속합니다. 다른 제품에 해당 규칙이 적용되었습니다. Magento Enterprise 1.13.0.1 버전에서이 문제가 발생합니다. 규칙은 해당 카테고리에 적용 할 수 있지만 catalogrule_product 테이블을 보면 그 제품에 대한 항목이 없습니다. 이는 해당 제품에 적용되는 규칙이 없음을 의미합니다.magento 대상 규칙이 특정 제품에 적용되지 않음

http://www.solvingmagento.com/quick-tip-magento-catalog-price-rules-dont-work/은 내가 언급 한 링크입니다.

어떤 이유로 제품에 적용된 대상 규칙이 없는지 알고 싶습니다. 1.이 문제를 처리하고 catalogrule_product 테이블을 채울 cron 작업이 있습니까? 예인 경우 어떤 cron 작업이이 작업을 수행합니까?

  1. 또한 우리는 제품을 저장할 때 예상되는 catalog_product_save_after 이벤트가 여전히 운이 실행되지하지만 점점 Mage_CatalogRule 모듈의 관찰자 방법 applyAllRulesOnProduct의 결과로 해고해야한다고.

  2. 관리자가 적용한 규칙을 클릭하면 작동합니다.

나는 이것을 알고 싶어하는 magento가 어떤 cron job/indexer도 제공하고 있지 않다는 것을 알고 싶다.

미리 감사드립니다. 당신은 마 젠토 백엔드 이외의 제품을 만드는 경우

답변

0

당신은 당신이

public function applyActiveRulesToProduct($productId) 
    { 
     try { 
      $product = Mage::getModel('catalog/product') -> load($productId); 

      $rules = Mage::getModel('catalogrule/rule')->getCollection()->addFieldToFilter('is_active', 1); 

      foreach ($rules as $rule) { 
       $rule->applyAllRulesToProduct($product); 
      } 
      return "Applied rules to " . $productId; 

     } catch (Exception $e) { 
      return $e->getMessage(); 
     } 


    } 
$ 제품 ->() 저장 방법 ...

라는 한 후 다음 코드를 사용 할 수 있습니다 (PHP를 사용하거나 비누)

내 비누 API 확장을 위해 작성한 코드입니다. applyToProduct (product, websiteIds)를 사용하여 적용 할 규칙을 가져올 수 없지만 규칙 배열에 필터가있는 applyAllRulesToProduct를 사용하면 트릭을 수행하는 것처럼 보입니다.

참고로이 코드는 CatalogRule.Rule.php 핵심 코드에도 포함되어 있지만 규칙 모델이나 제품 모델을 사용하여 직접 호출 할 수는 없습니다. 왜 그들이 그렇게했는지 누가 알 겠어.

관련 문제