쇼핑 카트 유럽 연합 국가의 가격 규칙
-
29-09-2020 - |
문제
쇼핑 카트 가격 규칙 나는 "배송 국가"가 ""가 아니라 "가 아닙니다"로 조건을 설정할 수 있습니다.모든 유럽 연합 국가 로이 조건을 확장해야합니다.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);
}
.
모든 규칙에서 올바르게 작동해야합니다. >
제휴하지 않습니다 magento.stackexchange