Adicionar um novo atributo(attribute) customizado(custom) para o cliente(custormer) no Magento nunca foi tão fácil, mas tenho que admitir que apanhei um pouco pra chegar nesse resultado final.
Basicamente o gostaria de fazer era adicionar um campo customizado ao customer do Magento e exibi-lo tanto no admin, quanto na página de registro e na página de informações do usuário o “Minha conta” (my account).
No exemplo que fiz aqui adicionei um campo customizado chamado CPF e o defini como obrigatório. A primeira parte desse código adiciona o atributo “cpf” ao cliente, ou seja cliente vai ter um atributo a mais. Além de nome, sobrenome … e outras diversas informações, vai ter também o CPF.
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->removeAttribute('customer', "cpf" );
$setup->addAttribute('customer', 'cpf', array(
'label' => 'CPF',
'type' => 'varchar',
'input' => 'text',
'visible' => true,
'required' => true,
'position' => 69,
)
);
A segunda parte define em quais formulários o atributo CPF deve aparecer. No meu caso é um campo importante por tanto coloquei-o disponível nos campos em “editar conta” ( em minha conta), criar conta (criar conta básico), informações da conta em cliente e na página de criar conta na página de checkout.
$customerattribute = Mage::getModel('customer/attribute')->loadByCode('customer','cpf');
$forms = array(
'customer_account_edit',
'customer_account_create',
'adminhtml_customer',
'checkout_register'
);
$customerattribute->setData('used_in_forms',$forms);
$customerattribute->save();
O código acima adiciona automaticamente o campo CPF no formulário da informações da conta para o cliente(customer) no admin do Magento, já nos outros formulários os campos devem ser definidos manualmente lá nos .phtml que lhes cabe.
Vou começar colocando o campo CPF na página de registro, aquela básica que normalmente pede nome, sobrenome, email e senha. Nessa página vou adicionar esse novo campo. Trabalhando com o customer é de se esperar que encontraremos os arquivos que queremos editar dentro da pasta “../template/customer/” dentro do seu tema, se por acaso o seu tema não tiver essa pasta copia a do “./frontend/base/default/template/customer/” para a pasta template do seu do seu tema.
O primeiro arquivo que vou editar é o register.phtml que você encontra em,./app/design/frontend/default/<seu_tema>/template/customer/form/register.phtml, ou em ./app/design/frontend/default/<seu_tema>/template/persistent/customer/form/register.phtml, logo abaixo do <li> que define o espaço do do email coloque
<li> <label class="required" for="cpf"><em>*</em> <?php echo $this->__('CPF') ?> </label> <div class="input-box"> <input id="cpf" class="input-text required-entry" title="<?php echo $this->__('CPF') ?>" type="text" name="cpf" value="<?php echo $this->htmlEscape($this->getFormData()->getCpf()) ?>" /> </div> </li>
Pra ver esse novo campo, atualize o cache do seu Magento e entre no URL referente a sua instalação, como segue o exemplo: http://exemplo.org.br/customer/account/create/, e veja o seu novo campo lá.
Para disponibilizar esse campo para o seu cliente de forma que ele possa editar o passo a passo é semelhante, mas o arquivo é o edit.phtml. Encontrado em ./app/design/frontend/default/<seu_tema>/template/customer/form/edit.phtml. Novamente logo abaixo o <li> do email coloque o código abaixo
<li> <label for="cpf" class="required"><em>*</em> <?php echo $this->__('CPF') ?> </label> <div class="input-box"> <input type="text" name="cpf" id="cpf" value="<?php echo $this->htmlEscape($this->getCustomer()->getCpf()) ?>" title="<?php echo $this->__('CPF') ?>" class="input-text required-entry" /> </div> </li>
Deve ficar mais ou menos assim
Nesse ponto já disponibilizei o campo obrigatório no registro e para editar em informações da conta na sessão minha conta do cliente.
Até o próximo post, e que leve menos tempo do que esse!
:)
Referencia:
Deixe um comentário