magento|去除注册时候的fistname和lastname简化注册流程

今天客户提了个新需求,就是想把注册时候的fistname和lastname去除掉,简化注册流程,增加客户注册量。经过模板解析发现两个问题:

1、firstname和lastname均为必填项,然后在多处进行了验证,要去除的话需要把所有验证都关闭;
2、模板中填写name的input均为引用的块,具体位置是app\design\frontend\yisainuo\wap\template\customer\widget\name.phtml,然后在对应的register里面引入:
<?php echo $this->getLayout()->createBlock('customer/widget_name')->setObject($this->getFormData())->setForceUseCustomerAttributes(true)->toHtml() ?>
3、更无语的是,这个块是通用块,不仅在注册页面使用,同时在结账页输入姓名的地方也使用了。
本来考虑的解决方案是全部把表单隐藏,然后给个默认值为empty,这样既躲过了验证,又不至于让其他需要name的地方为空。结果因为块通用的问题,只能作罢。考虑从底层干掉验证,最终整理出来四个步骤,具体的分析如下:

更改customer模块的config.xml,把里面的fistname和lastname中的is_required更改为0,具体重写位置为app\code\local\Mage\Customer\etc\config.xml;
更改Model下面的Abstract.php静态类,注释掉必填项,重写位置为app\code\local\Mage\Customer\Model\Address\Abstract.php;
更改Model下面的Customer.php模型,注释掉必填项,重写位置为app\code\local\Mage\Customer\Model\Customer.php;
最后一步是更改数据库eva_attribute表中的fistname和lastname对应行的is_required为0(这里说明一下,自定义的属性均可以在后台属性列表中设置是否必填,但内置的属性值不在列表显示,同样也无法通过后台更改).


效果如图:



最后,提供重写后的Customer模块下载,切记位置放在app\code\local\Mage\下面,把整个压缩包解压。然后更改数据库,清除var/cache下所有使模块生效,然后测试即可。另外本修改基于Magento 1.9.2.4,不保证兼容其他版本。

猜你喜欢

转载自blog.csdn.net/lolgigeo/article/details/88290536