문제

쇼핑 카트 가격 규칙 나는 "배송 국가"가 ""가 아니라 "가 아닙니다"로 조건을 설정할 수 있습니다.모든 유럽 연합 국가 로이 조건을 확장해야합니다.Magento는

에이 구성이 있으므로
system > configuration > general > countries options
.

장바구니 가격 가격 조건에서 사용하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

표준 기능은 없습니다. 그러한 규칙의 경우 어떤 유형의 조건을 사용해야합니다.

여기에 이미지 설명을 입력하십시오 >>

표준 조건 모델을 확장하려면 다시 작성을 수행하고 다음과 같이 적절한 조건을 추가해야합니다.

renwriting Mage_SalesRule_Model_Rule_Condition_Address 클래스 :

public function loadAttributeOptions()
{
    $attributes = parent::loadAttributeOptions()->getAttributeOption();
    $additionalAttributes = array(
        'eu' => Mage::helper('salesrule')->__('Europe Union Country'),
    );
    $attributes = array_merge($attributes, $additionalAttributes);
    $this->setAttributeOption($attributes);

    return $this;
}
.

/**
 * Validate Address Rule Condition
 *
 * @param Varien_Object $object
 * @return bool
 */
public function validate(Varien_Object $object)
{
    $address = $object;
    if (!$address instanceof Mage_Sales_Model_Quote_Address) {
        if ($object->getQuote()->isVirtual()) {
            $address = $object->getQuote()->getBillingAddress();
        }
        else {
            $address = $object->getQuote()->getShippingAddress();
        }
    }
    // Eu check start
    if ('eu' == $this->getAttribute() && !$address->getEu()) {
        $this->setValue(boolval($this->getValue()));
        $euCountries = explode(',', Mage::getStoreConfig('general/country/eu_countries'));
        if (empty($euCountries)) {
            $euCountries = array();
        }
        $isEu = in_array($address->getCountry(), $euCountries);
        $address->setEu($isEu);
    }
    // Eu check end

    return parent::validate($address);
}
.

필드가 조건에 나타납니다. 여기에 이미지 설명 입력

모든 규칙에서 올바르게 작동해야합니다. 여기에 이미지 설명을 입력하십시오> 여기에 이미지 설명 입력

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top