2015-04-14 59 views
1

如何从帐单信息部分中删除telephone field,magento。但在航运信息我需要telephone field。我可以隐藏billing.phtml文件中的电话号码。但telephone fieldmandatory字段。所以我不能点击继续按钮。从Magento的帐单信息部分删除电话号码

我需要telephone字段(必填)shipping Information page。并且不需要telephone字段b illing information page

我该怎么做?请帮助我...任何帮助真的很明显。

+0

http://www.magentocommerce.com/magento-connect/configurable-checkout.html正如我记得这个模块放入你的禁用字段中的一些默认值在后台 – zhartaunik

+1

SO是不是一个代码写作服务。如果您有一些代码并且无法使用,请发布它,以便我们可以帮助解决您的问题。 –

+0

@马克菲茨杰拉德,我不要求代码,但我需要一个建议或一些帮助如何做到这一点。如果我改变了一页的内容(账单),它会影响另一页(shippig)。这就是为什么我在这里发布问题。以下链接针对常见情况说明:http://swarminglabs.com/magento-making-the-telephone-field-not-required-at-checkout/ – next2u

回答

2

最终的解决方案包含三个步骤分别是:

  1. 删除客户端(JavaScript)验证 如果他们不存在内的主题,从基本/默认主题的以下文件复制到你的主题: template/checkout/onepage/billing.phtml
    在这些文件的每一个中,查找定义电话字段并从标签中删除所需的类,从输入中删除required-attribute类并确保删除*。

  2. 重新定义Mage_Customer_Model_Address_Abstract类 拷贝文件的应用程序/代码/核心/法师/客户/型号/地址/ Abstract.php到App /代码/本地/法师/客户/型号/地址/ Abstract.php。这可确保升级不会影响您的修改。现在打开文件,寻找在那里验证电话领域的一部分,它应该是这个样子:

    if (!Zend_Validate::is($this->getTelephone(), 'NotEmpty')) { 
        $errors[] = $helper->__('Please enter the telephone number.'); 
    } 
    

    您可以完全删除该部分或将其置于/**/之间注释掉。

  3. 更改数据库中的客户EAV 打开表eav_attribute并使用attribute_code = “telephone”搜索该行。记下该行的attribute_id。接下来,将列is_required设置为0(零)。
    现在,打开表customer_eav_attribute并搜索与上一步中记录的行相同的attribute_id。将此行上的列validation_rules设置为NULL。

+0

@ JIGNESH,此操作会取消帐单和发货页面中的电话验证。我只需要从结算页面中删除它。 – next2u

+0

您可以使用前端的magento课程来运输有效的电话。 css类:输入文本required-entry – JIGNESH

0

你可以使用GoMage LightCheckout扩展,它是一个有很多有用的选项的单页结帐解决方案,以及这些选项之一是对字段进行排序或删除你不需要的人的能力。因此,您可以使用该扩展程序的管理面板设置禁用电话号码字段。

1
app->code->core->mage->Eav->Model->Attribute->Data->Text.php 

不要在数据库表改变......... 你Text.php文件更改。我提到的路径....

变化这样的:

if ($attribute->getIsRequired() && strlen($value) == 0) 
{ 
    $errors[] = Mage::helper('eav')->__('"%s" is a required value.', $label); 
} 

到:

if ($attribute->getIsRequired() && strlen($value) == 0) 
{ 
if($label != 'Telephone') 
    { 
     $errors[] = Mage::helper('eav')->__('"%s" is a required value.', $label); 
    } 
} 
0

APP->代码 - >核 - > MAGE-> Eav->模型 - >属性 - >数据 - > Text.php

不会在数据库表中改变.........你可以在Text.php中改变,请为它创建一个本地副本,这意味着核心文件编辑在magento中不是一个好习惯,所以在app/code/local/Mage/Eav/Model/Attribute/Data/Text.php

改变这些行:

if ($attribute->getIsRequired() && strlen($value) == 0) 
{ 
    $errors[] = Mage::helper('eav')->__('"%s" is a required value.', $label); 
} 

这些:

if ($attribute->getIsRequired() && strlen($value) == 0) 
{ 
if($label != 'Telephone') 
    { 
     $errors[] = Mage::helper('eav')->__('"%s" is a required value.', $label); 
    } 
} 

更改这些行:

$validateRules = $attribute->getValidateRules();   
       if (!empty($validateRules['min_text_length']) && $length < $validateRules['min_text_length']) { 
        $v = $validateRules['min_text_length']; 
        $errors[] = Mage::helper('eav')->__('"%s" length must be equal or greater than %s characters.', $label, $v); 
       } 
       if (!empty($validateRules['max_text_length']) && $length > $validateRules['max_text_length']) { 
        $v = $validateRules['max_text_length']; 
        $errors[] = Mage::helper('eav')->__('"%s" length must be equal or less than %s characters.', $label, $v); 
       } 

要:

$validateRules = $attribute->getValidateRules(); 
     if($label != 'Telephone') 
      { 
       if (!empty($validateRules['min_text_length']) && $length < $validateRules['min_text_length']) { 
        $v = $validateRules['min_text_length']; 
        $errors[] = Mage::helper('eav')->__('"%s" length must be equal or greater than %s characters.', $label, $v); 
       } 
       if (!empty($validateRules['max_text_length']) && $length > $validateRules['max_text_length']) { 
        $v = $validateRules['max_text_length']; 
        $errors[] = Mage::helper('eav')->__('"%s" length must be equal or less than %s characters.', $label, $v); 
       } 
      }