Answers:
在1.8.1我不知道有什么方法可以完成这项工作之前,您必须覆盖本地代码池中的抽象核心类,或者重写每个子类(我知道这很丑)。
从此1.8.1,他们介绍了该活动customer_address_validation_after。即使我不太自豪,我也没有使用反射进行验证。可能无法解决您的问题,但我想还是应该发布它。
/**
 * Validate address ignoring phone-related errors
 *
 * Internally uses reflexion. Maybe not the most
 * efficient or clean implementation, but allows
 * this functionality to be implemented without
 * the need to rewrite 3 core classes.
 *
 * Listens to:
 * - customer_address_validation_after
 *
 * @param Varien_Event_Observer $observer Event observer
 */
public function validateAddress(Varien_Event_Observer $observer)
{
    /* @var $address Mage_Customer_Model_Address_Abstract */
    $address = $observer->getAddress();
    if (!$address) {
        return;
    }
    $prop = new ReflectionProperty('Mage_Customer_Model_Address_Abstract', '_errors');
    if (!$prop) {
        return;
    }
    $prop->setAccessible(true);
    $errors = $prop->getValue($address);
    $prop->setValue($address, array());
    $errorMessage = $this->getErrorMessage();
    foreach ($errors as $error) {
        if ($error !== $errorMessage) {
            $address->addError($error);
        }
    }
}
/**
 * Get standard error message
 *
 * @return string
 */
protected function getErrorMessage()
{
    return Mage::helper('customer')->__('Please enter the telephone number.');
}我还编写了一个更新脚本来定义不需要的文件,并编辑了所有表单以删除前端验证。就像我说的那样,这可能不是最好的解决方案,但是它比重写3-4类恕我直言更好。
UPDATE 
核心团队包裹事件customer_address_validation_after在从条件启动1.9.0通过1.9.1.1(我真的不知道为什么,是没有意义的我...),所以我的解决方案会为这些版本没有工作,很遗憾。幸运的是,有条件删除了1.9.2。
您将需要Mage_Customer_Model_Address_Abstract在第375-377行中修改类别*,注释电话号码的Zend验证。
//if (!Zend_Validate::is($this->getTelephone(), 'NotEmpty')) {
//   $errors[] = Mage::helper('customer')->__('Please enter the telephone number.');
//}以及数据库中的电话属性本身删除了所需的类。可以通过以下查询完成
UPDATE `eav_attribute` SET `is_required` = 0 WHERE `attribute_code` = 'telephone';这将处理电话字段的前端(Javascript)验证。
**确保将类文件复制到local代码目录中*
eav_attribute带有代码“电话”,因此您无法确定哪个已更新。然后代码应该工作(刚刚测试过)。对于可视部分,您仍然需要以<em>*</em>所有形式删除字段标签(签出/地址编辑)。当然,如果您安装了某种“一步式结帐”功能,则它可能会覆盖某些默认的Magento功能,并且此答案可能无效。
                    我建议更改网站主题的地址模板,并将手机设置为默认值为空格或破折号的隐藏字段。这将不需要重写/覆盖。
您不能简单地使用自定义扩展名和配置重写来重写使用抽象的类。
Mage_Sales_Model_Quote_Address,Mage_Customer_Model_Address,Mage_Sales_Model_Order_Address,然后,您可以创建自己的validate功能,该功能将排除电话检查,或者更好地检查所有必需的属性并验证它们是否已设置。