Campos Personalizados

99

Os campos personalizados no WHMCS permitem a coleta de informações adicionais dos clientes seja no momento do registro (register.php) ou no checkout/finalização do pedido (cart.php?a=checkout), não existe limite na criação/exibição dos campos mas o ideal é que seja o mínimo possível para agilizar cadastro/finalização do pedido. Podemos utilizar os campos personalizados nos produtos/serviços ou nos departamentos de suporte e definir se será visível ao cliente ou modo admin ( apenas os administradores do sistema poderão inserir/visualizar informações ). Confira outras informações na documentação oficial https://docs.whmcs.com/Custom_Fields

Para realizar essa customização você precisa OBRIGATORIAMENTE cadastrar os campos customizáveis.

É possível efetuar diversas personalizações nos campos customizáveis:

– Alteração de layout ( movimentação dos campos em locais fora do padrão );
– Validação de campos/Mascará de entrada ( utilizando programação javascript/php permite validar o campo no momento da digitação, exemplo ao digitar um CPF ele irá verificar se o mesmo é válido) ;
– E etc…

O objetivo desse post é demonstrar como alterar a exibição dos campos personalizados, por padrão os campos são exibidos no final dos campos “normais”:

 Exemplo final após alteração:

O campo CPF ou CNPJ ficou acima do campo Nome, o Telefone Celular ficou abaixo do Telefone e nos campos personalizados restou apenas o campo indicação.

Realizei essas alterações no template clientregister.tpl localizado em /templates/default/

Confira o passo-a-passo:

1) Localizei a linha 152:

{foreach key=num item=customfield from=$customfields}
<div class=”control-group”>
<label class=”control-label” for=”customfield{$customfield.id}”>{$customfield.name}</label>
<div class=”controls”>
{$customfield.input} {$customfield.description}
</div></div>{/foreach}

Apliquei as alterações em negrito:

{foreach key=num item=customfield from=$customfields}
{if $customfield.name==”Telefone Celular” || $customfield.name==”CPF ou CNPJ”}
 {else}
<div class=”control-group”>
<label class=”control-label” for=”customfield{$customfield.id}”>{$customfield.name}</label>
<div class=”controls”>
{$customfield.input} {$customfield.description}
</div></div>{/if}{/foreach}

Simplificando, através do código acima os campos Telefone Celular CPF ou CNPJ não devem aparecer e o demais campos que tiver irão aparecer normalmente.

Agora irei colocar o campo CPF ou CNPJ acima do campo Nome, localizo o campo firstname (linhas 31 à 36) e insiro acima o código abaixo:

{foreach key=num item=customfield from=$customfields}
{if $customfield.name==”CPF ou CNPJ”}
<div class=”control-group”>
<label class=”control-label” for=”customfield{$customfield.id}”>{$customfield.name}</label>
<div class=”controls”>
<input type=”text” id=”customfield[{$customfield.id}]” name=”customfield[{$customfield.id}]” size=”20″>
</div></div>{/if}{/foreach}

Por fim localizo o campo Telefone (linhas 125 à 130) e insiro abaixo o código:

{foreach key=num item=customfield from=$customfields}
{if $customfield.name==”Telefone Celular”}
<div class=”control-group”>
<label class=”control-label” for=”customfield{$customfield.id}”>{$customfield.name}</label>
<div class=”controls”>
<input type=”text” id=”customfield[{$customfield.id}]” name=”customfield[{$customfield.id}]” size=”20″> DDD + Tel
</div></div>{/if}{/foreach}

Estou disponibilizando essa personalização no link [Download não encontrado.] que servirá para sanar eventuais dúvidas.

Para facilitar o clientregister.tpl está em 3 versões dos templates ( classic, default e portal ) do WHMCS 5.1.2

Caso deseje realizar essas alterações no checkout ( cart.php ) você deve alterar o arquivo viewcart.tpl que está localizado em ( /templates/orderforms/seu_ordeform/ ).

Você gostou dessa personalização?

Tem alguma dúvida?

Faça seu comentário abaixo, obrigado!

99 COMENTÁRIOS

  1. Olá Edvan, em meu tema cada bloco é neste padrão:

    {$LANG.clientareafirstname}

    Sendo assim como fica a integração? já que não é padronizado com os temas que você colocou para download…

  2. Olá Edvan, em meu tema cada bloco é neste padrão:

    Sendo assim como fica a integração? já que não é padronizado com os temas que você colocou para download…

        • Óbvio! O campo customizável não irá aparecer como passe de mágica.

          Inclusive coloquei uma observação no post:

          “Para realizar essa customização você precisa OBRIGATORIAMENTE cadastrar os campos customizáveis”.

  3. o modelo do meu WHMCS está setado como “Default” joguei o clientregister.tpl para dentro de /templates/default, criei os campos personalizado “Telefone Celular” e “CPF ou CNPJ” estou usando o modelo de formulário de pedido o “Ajaxcart”, apaguei tudo que tinha dentro de templates_c e mesmo assim não aparece, sabe me dizer o problema?

  4. o modelo do meu WHMCS está setado como “Default” joguei o clientregister.tpl para dentro de /templates/default, criei os campos personalizado “Telefone Celular” e “CPF ou CNPJ” estou usando o modelo de formulário de pedido o “Ajaxcart”, apaguei tudo que tinha dentro de templates_c e mesmo assim não aparece, sabe me dizer o problema?

  5. Desculpa pessoal, consegui resolver aqui, apareceu os campos, porém eles aparecem no fim da página logo abaixo “força da senha” o CPF ou CNPJ não está acima do nome, e o Celular não está abaixo do Telefone, pq isso?

        • Edvan, já li e reli o tópico, entendi tudo perfeitamente, o problema é que eu pego o arquivo original clientregister.tpl, edito a linha 152, e jogo nele o código “{if $customfield.name==”Telefone Celular” || $customfield.name==”CPF ou CNPJ”} {else}” não me esquecendo de colocar o “{/if}” antes do “{/foreach}”, salvo o arquivo e jogo pro FTP, desta forma os campos CPF ou CNPJ e o Telefone Celular, não deveriam aparecer, certo? Pois então, eles continuam aparecendo normalmente e no mesmo lugar. Já exclui todo o conteúdo da pasta templates_c, e já limpei o cache dos 3 navegadores que uso para testes.

  6. Desculpa pessoal, consegui resolver aqui, apareceu os campos, porém eles aparecem no fim da página logo abaixo “força da senha” o CPF ou CNPJ não está acima do nome, e o Celular não está abaixo do Telefone, pq isso?

        • Edvan, já li e reli o tópico, entendi tudo perfeitamente, o problema é que eu pego o arquivo original clientregister.tpl, edito a linha 152, e jogo nele o código “{if $customfield.name==”Telefone Celular” || $customfield.name==”CPF ou CNPJ”} {else}” não me esquecendo de colocar o “{/if}” antes do “{/foreach}”, salvo o arquivo e jogo pro FTP, desta forma os campos CPF ou CNPJ e o Telefone Celular, não deveriam aparecer, certo? Pois então, eles continuam aparecendo normalmente e no mesmo lugar. Já exclui todo o conteúdo da pasta templates_c, e já limpei o cache dos 3 navegadores que uso para testes.

  7. Edvan, Achei outro problema kkkkk, tudo funciona blz, fiz a mesma coisa no clientareadetails.tpl, para ele organizar o conteúdo, o problema é, se eu digito alguma coisa ali, ele altera sem problemas, mas não aparece o conteúdo dos campos personalizados, agora se eu removo a customização tudo funciona blz, porém os campos personalizados vão lá para baixo, saberia me dizer o porque?

  8. Edvan, Achei outro problema kkkkk, tudo funciona blz, fiz a mesma coisa no clientareadetails.tpl, para ele organizar o conteúdo, o problema é, se eu digito alguma coisa ali, ele altera sem problemas, mas não aparece o conteúdo dos campos personalizados, agora se eu removo o “{foreach key=num item=customfield from=$customfields}

    {if $customfield.name==”Telefone Celular” || $customfield.name==”CPF ou CNPJ”}

    {else}

    {$customfield.input} {$customfield.description}

    {/if}{/foreach}”

    Tudo funciona blz, porém os campos personalizados vão lá para baixo, saberia me dizer o porque?

  9. Olá, como eu posso fazer para remover os campos na parte de registrar?
    Na verdade, remover eu sei, porém quando eu removo e faço o cadastro ele dá o seguinte erro:

    Você não digitou seu Endereço (linha 1)
    Você não digitou sua Cidade
    Você não digitou seu Estado
    Você não digitou seu CEP

    São os campos que retirei.. onde tenho que retirar a mais?
    E como inserir mais ?
    Obrigado

  10. Olá, como eu posso fazer para remover os campos na parte de registrar?
    Na verdade, remover eu sei, porém quando eu removo e faço o cadastro ele dá o seguinte erro:

    Você não digitou seu Endereço (linha 1)
    Você não digitou sua Cidade
    Você não digitou seu Estado
    Você não digitou seu CEP

    São os campos que retirei.. onde tenho que retirar a mais?
    E como inserir mais ?
    Obrigado

  11. Edvan, me dá um help! Veja só, segui seu tutorial e está funcionando minha validação de cpf, campo personalizado etc… porém , me deparei com o seguinte problema, se o cliente desejar modificar seus dados, os dados dos campos personalizados não estão aparecendo.

    Estou editando o arquivo: clientareadetails.tpl e me perdi nisso:

    {foreach key=num item=customfield from=$customfields}

    {if $customfield.name==”Nr/Apto”}

    {$customfield.name}

    {if in_array(‘nrcasa’,$uneditablefields)}{$customfield[6]}{else}{/if}

    {/if}

    {/foreach}

    Ou seja, não estou sabendo chamar o dado já armazenado na tabela .
    Agradeço a ajuda

  12. Edvan, me dá um help! Veja só, segui seu tutorial e está funcionando minha validação de cpf, campo personalizado etc… porém , me deparei com o seguinte problema, se o cliente desejar modificar seus dados, os dados dos campos personalizados não estão aparecendo.

    Estou editando o arquivo: clientareadetails.tpl e me perdi nisso:

    {foreach key=num item=customfield from=$customfields}

    {if $customfield.name==”Nr/Apto”}

    {$customfield.name}

    {if in_array(‘nrcasa’,$uneditablefields)}{$customfield[6]}{else}{/if}

    {/if}

    {/foreach}

    Ou seja, não estou sabendo chamar o dado já armazenado na tabela .
    Agradeço a ajuda

  13. Help-me

    edvan meu amigo me socorre

    Veja bem, hoje um cliente meu foi tentar se cadastra na area do cliente do meu whmcs e não conseguiu, depois que fui ver o que tava acontecendo, o whmcs não ta cadastrando pela area do cliente, pode preencher todos os campos, mas na hora que chega no campo CPF ele fica falando que Ocorreram os seguintes erros:

    O campo CPF ou CNPJ é de preenchimento obrigatório

    tudo está preenchido perfeitamente, mas so o CPF apresenta esse erro.
    Pode me da uma luz meu amigo?

    Abraço

    • Mário,

      Você precisa marcar/habilitar via admin o campo “Optional Client Profile Fields” e marcar os campos que você deseja que seja opcional, exemplo https://postimg.org/image/pk

      Depois acessar o template e editar o arquivo clientregister.tpl e remover os campos… no checkout edite o arquivo viewcart.tpl.

      Não recomendo esse procedimento!

  14. Boa tarde, existe algum codigo que faz a verificação de um cpf/cnpj ou outro campo e retorna a mensagem que este cnpj já foi cadastrado ? ou outro campo tipo Site ? Estou tendo cadastro em duplicidade por parte dos clientes.

  15. Boa tarde, existe algum codigo que faz a verificação de um cpf/cnpj ou outro campo e retorna a mensagem que este cnpj já foi cadastrado ? ou outro campo tipo Site ? Estou tendo cadastro em duplicidade por parte dos clientes.

    • Apenas se for o cadastro do número, arquivo digital não tem como… minha sugestão seria criar uma personalização que após o cadastro o sistema enviasse um email automático solicitando que o cliente enviasse por ticket os arquivos.

    • Apenas se for o cadastro do número, arquivo digital não tem como… minha sugestão seria criar uma personalização que após o cadastro o sistema enviasse um email automático solicitando que o cliente enviasse por ticket os arquivos.

  16. Uma pequena atualização no seu código caso alguém veja e precise implementar.

    Adicionar CPF depois do sobrenome, coloque o código do CPF abaixo deste:

    {$LANG.clientarealastname}

    {/if}


    {foreach key=num item=customfield from=$customfields}
    {if $customfield.name=="CPF ou CNPJ"}

    {$customfield.name}

    {/if}{/foreach}


    Adicionar Telefone Celular depois do Telefone, coloque o código do Cel abaixo deste:

    {$LANG.clientareaphonenumber}

    {/if}

    {foreach key=num item=customfield from=$customfields}
    {if $customfield.name=="Telefone Celular"}

    {$customfield.name}

    DDD + Cel
    {/if}{/foreach}


    Boa sorte e obrigado Edvan.

  17. Uma pequena atualização no seu código caso alguém veja e precise implementar.

    Adicionar CPF depois do sobrenome, coloque o código do CPF abaixo deste:



    {/if}

    {foreach key=num item=customfield from=$customfields}
    {if $customfield.name=="CPF ou CNPJ"}

    customfield.id}]" name="customfield[{$customfield.id}]" class="form-control" required=""/>

    {/if}{/foreach}


    Adicionar Telefone Celular depois do Telefone, coloque o código do Cel abaixo deste:



    {/if}

    {foreach key=num item=customfield from=$customfields}
    {if $customfield.name=="Telefone Celular"}

    customfield.id}]" name="customfield[{$customfield.id}]" class="form-control"/> DDD + Cel

    {/if}{/foreach}


    Os campos abaixo no final da página onde eram os customfield podem ser removidos ou declarados em branco como no exemplo do Edvan

    Coloque o código abaixo deste:


    {foreach key=num item=customfield from=$customfields}
    {if $customfield.name=="Telefone Celular"}

    DDD + Cel

    {/if}{/foreach}


    {if $customfields}
    {foreach from=$customfields key=num item=customfield}
    {if $customfield.name=="Telefone Celular" || $customfield.name=="CPF ou CNPJ"}
    {else}

    {$customfield.input} {$customfield.description}

    {/if}
    {/foreach}

    Boa sorte e obrigado Edvan.

DEIXE UMA RESPOSTA

Please enter your comment!
Please enter your name here