Vous devez créer une nouvelle extension pour la rendre propre.
Appelons l'extension StackExchange_Customer
.
Vous aurez besoin des fichiers suivants:
app/etc/modules/StackExchange_Customer.xml
- le dossier de déclaration
<?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
- le fichier de configuration
<?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
- le fichier d'installation. Ajoutera le nouvel attribut.
<?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
- l'aide principale du module
<?php
class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract
{
}
Cela ajoutera votre attribut pour le client.
Cela devrait bien fonctionner sur le backend.
Malheureusement, vous devez modifier les modèles frontaux manuellement maintenant, car Magento n'a aucun événement ou bloc vide où vous pouvez placer vos champs.
Pour cela, vous avez besoin des éléments suivants.
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>
Et maintenant les modèles.
app/design/frontend/base/default/template/stackexchange_customer/register.phtml
- le modèle d'enregistrement.
Pour celui-ci, faites un clone du /app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtml
et insérez-le simplement quelque part dans le formulaire. Je n'ai pas besoin de poster le dossier complet ici. Arrangez-le comme bon vous semble
<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
Pour celui-ci, clonez /app/design/frontend/{package}/{theme}/template/customer/form/edit.phtml
et insérez quelque part à l'intérieur du formulaire ceci:
<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>
Vous pouvez également créer le fichier de traduction. N'est pas obligatoire mais c'est bien d'avoir
app/locale/en_US/StackExchange_Customer.csv
"License Number","License Number"
Videz le cache et vous devriez être prêt.