为什么 Magento 询问名字和姓氏?
-
12-12-2019 - |
题
作为商店老板,两个姓名字段数据(名字和姓氏)在经营商店时非常不便。
当我导入送货地址时,我使用的大多数承运商仅询问一个全名数据。我必须在导出送货地址后将名字和姓氏数据合并为一个。(即使是支付公司也只要求一项全名数据)
当我管理或搜索带有姓名的客户时,它会引起一些问题
我厌倦了只获取一个姓名数据,但是我遇到了问题,因为 magento 在很多方面(甚至在欢迎消息中)使用不同的名字和姓氏,所以我放弃了
从客户的角度来看,这看起来也很不方便。输入名字,然后单击其他字段并输入姓氏,而不仅仅是输入全名。(结账很重要,因为它涉及转化率)
我希望 Magento 作为店主只获得一个名称数据(我相信 Magento 也是为店主制作的)
我至少可以知道 Magento 要求两个名称字段作为开发人员视图的原因吗?有什么好处吗?
例如)顶级电子商务公司 Amazon 和 eBay 仅询问一项
这是 亚马逊 新地址表格 - 只有一个姓名字段
易趣 新地址表格 - 只有一个姓名字段
解决方案
使用名字和姓氏只是 Magento 架构的一部分。
你的问题是问为什么会出现这种情况。据推测,Magento 已经添加了 firstname
和 lastname
属性(甚至还有一个可选的 middlename
一种被定义为默认但不显示),为商家提供尽可能多的灵活性。正如您所指出的,这与其他更成熟的网站不同,但 Magento 必须迎合一系列可能的商家,并尝试尽可能不具体。
然而,像所有 Magento 一样,没有什么是一成不变的,并且可以更改,但这是一个编码练习,因此可能是一个相当复杂的过程。为了实现这一点,您需要做一些不同的事情。我将尝试并详细说明我将在下面采取的步骤。
1.添加全名属性
需要将全名作为属性添加到客户。您可以创建一个模块来处理此问题,但本质上,您需要运行安装程序脚本来安装 fullname
作为针对客户属性集的属性。
网上有很多关于这方面的有用教程。 卓越 Magento 有一个很棒的 (下面部分显示代码,根据您的要求进行编辑)
$setup->addAttribute('customer', 'fullname', array(
'type' => 'text',
'input' => 'text',
'label' => 'Full Name',
'global' => 1,
'visible' => 1,
'required' => 1,
'user_defined' => 1,
'default' => '0',
'visible_on_front' => 1
));
2.在模板中添加新属性
您现在需要检查新属性的字段并将其添加到所有相关模板中;从而允许用户输入它。
您可以在流程中删除“名字”和“姓氏”字段(只要适用)。
3.调整名字和姓氏属性
名字和姓氏是数据库中的必需属性,因此在删除它们之前您将无法执行太多操作 required
属性本身的状态。
您需要编写一个一次性脚本来调整设置;代码应类似于以下内容:
$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('customer','firstname');
if ($attributeId) {
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attribute->setIsRequired(false)->save();
}
$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('customer','lastname');
if ($attributeId) {
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attribute->setIsRequired(false)->save();
}
之后,您应该已成功转移 firstname
和 lastname
成一个单一的 fullname
场地。
如果您有任何现有客户,您将能够编写一个脚本来结合 firstname
和 lastname
字段进入 fullname
一。
其他提示
简单它取决于玛托地架构。Magento存储“名字”或“姓氏”作为属性,也是“中间名”,即人民很少使用。
我不确定你为什么会遇到这种情况。
Magento 有一个 $customer->getName()
客户对象的函数,它将始终返回完整的名称。
您只需要使用 getName() 而不是 getfullName() 或 getData('fullname')。
我希望这能解决您所有的疑虑。:)
我至少可以知道 Magento 要求两个名称字段作为开发人员视图的原因吗?有什么好处吗?
您可以从名字和姓氏创建全名,也可以单独使用它们,但如果您只有一个姓名字段,则不能这样做。就像前端渲染一样,我想得到这样的问候 Hello Aman
而不是 Hello Aman Srivastava
.