
在英文中
fist name:名
last name:姓
magento中客户填写用户信息的时候,姓名是分开的。根据国外的习惯,名在前,姓在后,这个好说,直接去模版文件修改下显示顺序。
以magento1.4的default模板为例
magento注册页面姓名模板文件路径:app\design\frontend\base\default\template\customer\widget\name.phtml
将
<div class="field name-firstname"> <label for="<?php echo $this->getFieldId('firstname')?>" class="required"><em>*</em><?php echo $this->__('First Name') ?></label> <div class="input-box"> <input type="text" id="<?php echo $this->getFieldId('firstname')?>" name="<?php echo $this->getFieldName('firstname')?>" value="<?php echo $this->htmlEscape($this->getObject()->getFirstname()) ?>" title="<?php echo $this->__('First Name') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> /> </div> </div> <?php if ($this->showMiddlename()): ?> <div class="field name-middlename"> <label for="<?php echo $this->getFieldId('middlename')?>"><?php echo $this->__('M.I.') ?></label> <div class="input-box"> <input type="text" id="<?php echo $this->getFieldId('middlename')?>" name="<?php echo $this->getFieldName('middlename')?>" value="<?php echo $this->htmlEscape($this->getObject()->getMiddlename()) ?>" title="<?php echo $this->__('M.I.') ?>" class="input-text" <?php echo $this->getFieldParams() ?> /> </div> </div> <?php endif; ?> <div class="field name-lastname"> <label for="<?php echo $this->getFieldId('lastname')?>" class="required"><em>*</em><?php echo $this->__('Last Name') ?></label> <div class="input-box"> <input type="text" id="<?php echo $this->getFieldId('lastname')?>" name="<?php echo $this->getFieldName('lastname')?>" value="<?php echo $this->htmlEscape($this->getObject()->getLastname()) ?>" title="<?php echo $this->__('Last Name') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> /> </div> </div>
改为
<div class="field name-lastname"> <label for="<?php echo $this->getFieldId('lastname')?>" class="required"><em>*</em><?php echo $this->__('Last Name') ?></label> <div class="input-box"> <input type="text" id="<?php echo $this->getFieldId('lastname')?>" name="<?php echo $this->getFieldName('lastname')?>" value="<?php echo $this->htmlEscape($this->getObject()->getLastname()) ?>" title="<?php echo $this->__('Last Name') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> /> </div> </div> <?php if ($this->showMiddlename()): ?> <div class="field name-middlename"> <label for="<?php echo $this->getFieldId('middlename')?>"><?php echo $this->__('M.I.') ?></label> <div class="input-box"> <input type="text" id="<?php echo $this->getFieldId('middlename')?>" name="<?php echo $this->getFieldName('middlename')?>" value="<?php echo $this->htmlEscape($this->getObject()->getMiddlename()) ?>" title="<?php echo $this->__('M.I.') ?>" class="input-text" <?php echo $this->getFieldParams() ?> /> </div> </div> <?php endif; ?> <div class="field name-firstname"> <label for="<?php echo $this->getFieldId('firstname')?>" class="required"><em>*</em><?php echo $this->__('First Name') ?></label> <div class="input-box"> <input type="text" id="<?php echo $this->getFieldId('firstname')?>" name="<?php echo $this->getFieldName('firstname')?>" value="<?php echo $this->htmlEscape($this->getObject()->getFirstname()) ?>" title="<?php echo $this->__('First Name') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> /> </div> </div>
我们可以看到还有个middle name在我们的代码中,不用管它,后台不设置显示,他不会显示的。
我们可不要直接用在线翻译功能直接将这个fist name翻译成姓,last name翻译成名字。这么干如果客户叫李四,等他收到客户邮件的时候,邮件内容就可能是四先生,而不是李先生。大家一定要想到有的时候改magento的一个地方,会影响到很多其它的地方。
转载表明出处:hellokeykey.com
这是直接修改姓名变量的方法,一次改动即可;修改文件:magentoappcodecoreMageCustomerModelCustomer.php,之后重新编译文件.
由:
/**
* Get full customer name
*
* @return string
*/
public function getName()
{
$name = ”;
$helper = Mage::helper(‘customer/address’);
if ($helper->canShowConfig(‘prefix_show’) && $this->getPrefix()) {
$name .= $this->getPrefix() . ‘ ‘;
}
$name .= $this->getFirstname();
if ($helper->canShowConfig(‘middlename_show’) && $this->getMiddlename()) {
$name .= ‘ ‘ . $this->getMiddlename();
}
$name .= ‘ ‘ . $this->getLastname();
if ($helper->canShowConfig(‘suffix_show’)&& $this->getSuffix()) {
$name .= ‘ ‘ . $this->getSuffix();
}
return $name;
}
改为:
/**
* Get full customer name
*
* @return string
*/
public function getName()
{
$name = ”;
$helper = Mage::helper(‘customer/address’);
if ($helper->canShowConfig(‘prefix_show’) && $this->getPrefix()) {
$name .= $this->getPrefix() . ‘ ‘;
}
$name .= ‘ ‘ . $this->getLastname();
if ($helper->canShowConfig(‘middlename_show’) && $this->getMiddlename()) {
$name .= ‘ ‘ . $this->getMiddlename();
}
$name .= $this->getFirstname();
if ($helper->canShowConfig(‘suffix_show’)&& $this->getSuffix()) {
$name .= ‘ ‘ . $this->getSuffix();
}
return $name;
}
嗯,大家可以试试这段代码,达到目的就好
其实这个最佳解决办法就是改语言包里CSV的翻译,这样还解决了多语言的带来的问题。。。
=======
如:
first name => 名
last name => 姓
翻译改后:
first name => 姓
last name => 名
如果将姓名这样弄会有未知的问题,比如一个插件和姓名有关,那就会姓名颠倒。我想中国化,就是不要再翻译上修改,而是在模板中颠倒显示顺序才好。
插件里肯定有语言包了,你安装里还是英文的,还是得改言语包,你在模板里换顺序的话,与在模板里换一个性质,都是位置互换,关建你不知道模板里哪些不漏的。。。
语言包打开搜索一下就出来了
…..改翻译后患无穷