我喜欢在客户注册和管理员客户创建表单中添加新字段。
字段名称是许可证号。我搜索了很多与我的需求相关的链接,但这些链接在Magento(1.9)中不起作用。甚至我发现与此相关的扩展名:
http://www.magentocommerce.com/magento-connect/custome-account-profile-13594.html
当我使用密钥安装上述扩展程序时,显示错误。您能给我一些与我的要求有关的想法吗?
我喜欢在客户注册和管理员客户创建表单中添加新字段。
字段名称是许可证号。我搜索了很多与我的需求相关的链接,但这些链接在Magento(1.9)中不起作用。甚至我发现与此相关的扩展名:
http://www.magentocommerce.com/magento-connect/custome-account-profile-13594.html
当我使用密钥安装上述扩展程序时,显示错误。您能给我一些与我的要求有关的想法吗?
Answers:
您需要创建一个新扩展名以使其干净。
让我们称之为extension StackExchange_Customer
。
您将需要以下文件:
app/etc/modules/StackExchange_Customer.xml
-声明文件
<?xml version="1.0"?>
<config>
<modules>
<StackExchange_Customer>
<active>true</active>
<codePool>local</codePool>
<depends><Mage_Customer/></depends>
</StackExchange_Customer>
</modules>
</config>
app/code/local/StackExchange/Customer/etc/config.xml
-配置文件
<?xml version="1.0"?>
<config>
<modules>
<StackExchange_Customer>
<version>1.0.0</version>
</StackExchange_Customer>
</modules>
<global>
<helpers>
<stackexchange_customer>
<class>StackExchange_Customer_Helper</class>
</stackexchange_customer>
</helpers>
<resources>
<stackexchange_customer_setup>
<setup>
<module>StackExchange_Customer</module>
<class>Mage_Customer_Model_Resource_Setup</class>
</setup>
</stackexchange_customer_setup>
</resources>
</global>
<frontend>
<layout>
<updates>
<stackexchange_customer>
<file>stackexchange_customer.xml</file>
</stackexchange_customer>
</updates>
</layout>
<translate>
<modules>
<StackExchange_Customer>
<files>
<default>StackExchange_Customer.csv</default>
</files>
</StackExchange_Customer>
</modules>
</translate>
</frontend>
</config>
app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.php
-安装文件。将添加新属性。
<?php
$this->addAttribute('customer', 'license_number', array(
'type' => 'varchar',
'label' => 'License Number',
'input' => 'text',
'position' => 120,
'required' => false,//or true
'is_system' => 0,
));
$attribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'license_number');
$attribute->setData('used_in_forms', array(
'adminhtml_customer',
'checkout_register',
'customer_account_create',
'customer_account_edit',
));
$attribute->setData('is_user_defined', 0);
$attribute->save();
app/code/local/StackExchange/Customer/Helper/Data.php
-模块主要助手
<?php
class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract
{
}
这将为您的客户添加属性。
它应该在后端工作良好。
不幸的是,您现在必须手动编辑前端模板,因为Magento没有任何可放置字段的事件或空白块。
为此,您需要以下内容。
app/design/frontend/base/default/layout/stackexchange_customer.xml
<?xml version="1.0"?>
<layout>
<customer_account_edit>
<reference name="customer_edit">
<action method="setTemplate">
<template>stackexchange_customer/form/edit.phtml</template>
</action>
</reference>
</customer_account_edit>
<customer_account_create>
<reference name="customer_form_register">
<action method="setTemplate">
<template>stackexchange_customer/register.phtml</template>
</action>
</reference>
</customer_account_create>
</layout>
现在是模板。
app/design/frontend/base/default/template/stackexchange_customer/register.phtml
-注册模板。
为此,请复制/app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtml
并将其插入表单内的某个位置。我不需要在此处发布完整文件。随便安排
<li>
<label for="license_number"><?php echo $this->__('License Number') ?></label>
<div class="input-box">
<input type="text" name="license_number" id="license_number" value="<?php echo $this->escapeHtml($this->getFormData()->getLicenseNumber()) ?>" title="<?php echo $this->__('License Number') ?>" class="input-text" />
</div>
</li>
/app/design/frontend/base/default/template/stackexchange_customer/form/edit.phtml
对于这个克隆/app/design/frontend/{package}/{theme}/template/customer/form/edit.phtml
并将其插入以下形式:
<li>
<label for="license_number"><?php echo $this->__('License Number') ?></label>
<div class="input-box">
<input type="text" name="license_number" id="license_number" value="<?php echo $this->htmlEscape($this->getCustomer()->getLicenseNumber()) ?>" title="<?php echo $this->__('License Number') ?>" class="input-text" />
</div>
</li>
您也可以创建翻译文件。不是强制性的,但是很高兴
app/locale/en_US/StackExchange_Customer.csv
"License Number","License Number"
清除缓存,您将被设置。
app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.php
文件更新了答案。由于您已经安装了模块,因此新的安装脚本将不会再次运行。要使其再次运行,您需要从表中删除eav_attribute
带有代码的属性,license_number
并从表中删除带有代码core_resource
的记录StackExchange_Customer
。清除缓存并刷新页面。安装脚本应再次运行。
install-1.0.0
到upgrade-1.0.0-1.0.1
该字段并在克隆的文件中进行修改。然后将version
标记更改config.xml
为1.0.1
。在此处查看升级脚本的工作方式:magento.stackexchange.com/q/26313/146