如何从结帐页面中删除客户的中间名缩写/姓名?


19

自升级到最新版本的Magento以来,我注意到结帐页面上出现了一个新条目,要求客户提供中间名/缩写。

如何从结帐页面中删除“中间名/首字母”条目?

Answers:


46

Magento 1.9.2.1更新如何影响中间名

一,解决方法

Magento CE 1.9.2.0更新到Magento CE 1.9.2.1时,我遇到了同样的问题。更新导致显示中间名,但是当我检查管理员时,“显示中间名(初始)”设置已经显示“否”,这正是我想要的。在单击“保存配置”之前,我将设置更改为“是”,然后又重新设置为“否”,刷新页面后,这立即从Checkout中删除了中间名/首字母。System > Configuration > Customers > Customer Configuration > Name and Address Options

数据库

就我而言,我正在将商店从Magento 1.8.x更新到Magento1.9.x。我是在开发环境中从1.9.2.0更新到1.9.2.1。为了在启动从1.8.x到1.9.x的升级时使实时站点保持最新,我们将需要更新许多管理员设置,我们计划使用查询直接在数据库中进行操作。在数据库中,您可以看到Magento如何更改中间名设置。

显示的管理员设置可能会引起误解

表`core_config_data`处理带有记录where的“显示中间名(初始)的管理员设置” `core_config_data`.`path`='customer/address/middlename_show'

该记录将设置保存在“值”字段中(0 =“否”,1 =“是”)。通过升级到Magento CE 1.9.2.1出现中间名时,不会更改此字段。如果您在Magento更新至1.9.2.1期间进行更改后,在管理员设置中保存了对“显示中间名(初始名称)”的更改,则会在此处更改“ core_config_data”值。

对1.9.2.1的更新没有更改`core_config_data`上的记录,因此在管理员设置中显示的内容。但是,更新确实更改了不同表的不同记录。

实际的中间名可见性在“ customer_eav_attribute”中

在我的Magento的许多开发实例中,表`eav_attribute`具有2个“中间名”`attribute_code`(s),`attribute_id`s为621。该`customer_eav_attribute`表载有场`is_visible`属性的知名度。

  • 在我的实时1.8.x环境中,attribute_id 6和21具有`is_visible` = 0
  • 在将开发从Magento CE 1.9.2.0更新到Magento CE 1.9.2.1之后,它变成了。`is_visible` = 1
  • 在切换并将管理员“显示中间名(初始)”保存为“否”后,`is_visible`=0再次出现了中间名/初始字段从Checkout消失的情况。

摘要

Magento的CE 1.9.2.1更新翻转中东名称设置在`customer_eav_attribute`表,而不会影响下的“显示中间名(初始)”设置显示在Magento管理。您可以通过切换“显示中间名(初始)”设置,而不用进行模板的广泛调整来解决通常在管理员中调整设置的问题。

边注

如果出于某种原因您需要在商店的多个副本之间或在一批管理员更新中转移此管理设置,例如在升级商店以匹配开发环境时... 可以将以下SQL语句用于此设置(前提是您知道商店中的“中间名称”分别是“ attribute_id” 6和21。这是Magento的标准配置,但是为了安全起见,请先仔细检查“ eav_attribute”表。)

UPDATE customer_eav_attribute SET is_visible = 0 WHERE attribute_id IN (6, 21);


对magento 1.9.2.1的修复对我来说很好用
Fra,

5

技术答案

系统配置选项具有一个后端模型(Mage_Adminhtml_Model_System_Config_Backend_Customer_Show_Customer),其_afterSave方法对客户EAV属性(表:)进行了相同的更改customer_eav_attribute

系统配置选项值和EAV属性is_visible值可能不一定同步(由于Magento升级,或者通过编程方式更改了配置选项,或其他任何原因)。

几次翻转开关即可解决此问题,或者,如果您像我一样,并且对所有内容使用安装/升级脚本,则可以执行以下操作:

Mage::getModel('core/config')
    ->saveConfig('customer/address/middlename_show', 0);    

try {

    $attribute = Mage::getSingleton('eav/config')
        ->getAttribute('customer', 'middlename')
        ->setIsVisible(0)
        ->save();

    $attribute = Mage::getSingleton('eav/config')
        ->getAttribute('customer_address', 'middlename')
        ->setIsVisible(0)
        ->save();

} catch (Exception $e) {
    Mage::logException($e);
    throw $e;
}

1
谢谢,工作很棒。您还应该为客户地址属性添加代码:$attribute = Mage::getSingleton('eav/config') ->getAttribute('customer_address', 'middlename') ->setIsVisible(0) ->save();
Andreas von Studnitz


0

卸下{{depend middlename}}{{var middlename}}像@sr_magento在他的回答表明实际上不会删除删除Show Middle Name (initial)从结帐页面本身的领域。它仅从呈现/打印客户地址信息的区域中将其删除,例如在管理区域,PDF和电子邮件模板中。

无需从电子邮件模板中删除该字段。这太过分了,如果您以后决定启用该功能Show Middle Name(initial),则必须将这些条目再次添加到电子邮件模板中。

使用Magento下载器从Magento CE 1.9.2.0更新到Magento CE 1.9.2.1之后,我也注意到了这一故障。更新似乎调整的设置Show Middle Name (initial)

System > Configuration > Customers > Customer Configuration > Name and Address Options

“否”“是”。它发生在我位于不同服务器上的几家商店中。

要撤消此操作,只需将其设置回“ No”并保存配置即可。该Show Middle Name (initial)字段将不再显示在结帐页面上。


@sr_magento您的方法可能有效(尽管我不确定为什么,我怀疑只是保存配置即可解决问题),但是您的推理不正确。更改Address Templates您建议的样式不会更改商店前端的“结帐页面”输入字段。它仅影响用于打印地址的模板。请阅读以下文档。您对管理面板中的客户区域是正确的。我将改写我的答案的这一部分。
ForMat

0

如果要直接从文件中删除,则

打开以下文件

应用=>设计=>前端=>基本=>默认=>模板=>客户=>小部件=> name.phtml

搜索if ($this->showMiddlename()) 注释或删除完整的if语句

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.