2

我正在使用 AheadWorks 的单页结帐模块,并且我正在尝试仅从已登录的成员中检索帐单地址。

目前,用于选择其账单地址的下拉菜单显示由登录成员创建的所有地址。还有送货地址。我希望这仅显示帐单地址。有没有办法这样做?我已经看了一下应该使用的块,但不幸的是,我不明白。

public function getAddressesHtmlSelect($type)
{
    if ($this->isCustomerLoggedIn()) {
        $options = array();
        foreach ($this->getCustomer()->getAddresses() as $address) {
            $options[] = array(
                'value' => $address->getId(),
                'label' => $address->format('oneline')
            );
        }

        $addressDetails = Mage::getSingleton('checkout/session')->getData('aw_onestepcheckout_form_values');
        if (isset($addressDetails[$type.'_address_id'])) {
            if (empty($addressDetails[$type.'_address_id'])) {
                $addressId = 0;
            } else {
                $addressId = $addressDetails[$type.'_address_id'];
            }
        } else {
            $addressId = $this->getQuote()->getBillingAddress()->getCustomerAddressId();
        }
        if (empty($addressId) && $addressId !== 0) {
            $address = $this->getCustomer()->getPrimaryBillingAddress();
            if ($address) {
                $addressId = $address->getId();
            }
        }

        $select = $this->getLayout()->createBlock('core/html_select')
            ->setName($type.'_address_id')
            ->setId($type.'-address-select')
            ->setClass('address-select')
            ->setValue($addressId)
            ->setOptions($options);

        return $select->getHtml();
    }
    return '';
}
4

2 回答 2

2

简单的答案是否定的,你不能那样做。原则上,magento 有客户实体和客户地址实体。客户地址的类型可以是帐单或发货,但这仅适用于报价和订单。但是,当地址保存在客户地址中时,它没有指示它是哪一个,因此您可以在两个步骤中使用它。

长答案。为了实现您的需要,您必须扩展 magento 客户地址实体并将此划分放在实体本身中。但是,这将需要重写代码的某些部分,这些代码过于宽泛,无法在此处给出准确的答案。

或者,您可以尝试通过查看用户以前的订单并检查该地址的类型来确定该地址是计费还是发货。

于 2015-04-15T21:46:15.673 回答
-1

我也在寻找这个,这是我找到的东西,试试看: http: //www.magebuzz.com/blog/disable-shipping-address-in-magento-checkout/

于 2015-07-09T21:05:04.107 回答