Pages

Subscribe:

Ads 468x60px

Labels

20/03/2014

Acrescentando um novo campo no formulário de cadastro do Joomla! 2.5

O formulário de registro de usuários do Joomla! 2.5 possui dois meios de acrescentar campos novos para cadastro.  O primeiro é através da ativação do plug-in “User - Profile” que por padrão vem desativado:

Esta forma de adicionar novos campos a seu formulário é rápida e fácil, porém não atende a campos mais específicos e personalizados que cada site possa vir a precisar.
Para definirmos novos campos personalizado exigirá um pouco mais de esforço e tempo, pois precisaremos de acesso ao servidor FTP ou SFTP e ao banco de dados do projeto Joomla! 2.5.  Como pode ser visto abaixo eu criei uma nova coluna da tabela de usuários de nome “prefixo_users”:

Agora iremos alterar os arquivos fontes do Joomla! através do acesso aos arquivos via FTP.  Veja abaixo que alteramos o arquivo: \libraries\joomla\user\user.php acrescentando a propriedade pública (public) $crm = null, na linha 47:

No formulário de registro do frontend  \components\com_users\models\forms\registration.xml, vamos inserir também um novo registro para que o Joomla acrescente uma nova linha no formulário logo abaixo do “name”:

Isso já é suficiente para que apareça no formulário de registro de usuário, como pode ser observado abaixo:

Para que possamos ver se realmente foi cadastro o campo novo criado, podemos ou consultar a base de dados ou continuar melhorando a visão agora do Administator backend do Joomla!.
Vamos agora então editar o seguinte arquivo \administrator\components\com_users\models\forms\user.xml:

Para validarmos opcionalmente o campo criado podemos criar uma condição adicional no arquivo \libraries\joomla\database\table\user.php no método check():


Inserimos este campo também no arquivo de pluglin criação de contato \plugins\user\contactcreator\contactcreator.php , linhas 88 e 90:

E para finalizar inserimos este campo tambem em \plugins\user\joomla\joomla.php na linha 254 como podemos observar abaixo:
Se nos logarmos no sistema administrativo, veremos que o campo pode ser acessado e conferido de lá:

Qualquer dúvida, sugestão ou melhoria, comentem e sigam este blog!



6 comentários:

Unknown disse...

Olá.
Poderia me Ajudar???
Já havia mudado meu cadastro no Front-end e Back-End, mas, agora me veio a ideia de por duas Selects Dinâmicas de Estado e Cidade.

Já coloquei em outros componentes, mas, todos possuíam um arquivo php para inserir o Javascript.
No caso do User existe um arquivo PHP de classe e não entendi como posso colocar nele.

Link do projeto que quero por - https://mega.nz/#!810iGZpK!zULfpJ0hX96ErN0H8xE-6aoWq_AxdqQ-oQ-GEsZgEQg

Roberto disse...

Bom dia Decio. Seu projeto foi feito em qual versão do Joomla!?
Usa Rsform! componente? Se não instale ele, se sim Crie os campos Estado e Cidade nele e crie todo o Javascript com jQuery Ajax para carregar os campos na parte do Componente que aceita tanto PHP personalizado como Javascript.

Roberto disse...

Agora que entendi a pergunta. Use um jQuery personalizado e importe ele para o topo do site. Nele vc poderá manipular estes combos dependentes. Claro que primeiro deve criar os dois campos personalizados normais com a ajudar deste tutorial e restante vc manipula pelo jQuery Ajax.
Estou neste momento sem tempo de lhe construir um exemplo, mas, se buscar na internet achará muitos tutorias de como criar um combo select dependente com Ajax jQuery.

Roberto disse...

Mais informações:
https://docs.joomla.org/Form_field

https://www.sakic.net/news/custom-fields-for-joomla-registration-with-ajax-register/

Unknown disse...
Este comentário foi removido pelo autor.
Unknown disse...

Olá Roberto, obrigado por responder!!
Uso Joomla 2.5.

Eu fiz as modificações como vc demonstrou no teu site.
Problema é que não tem um php para que eu possa fazer o anexo do JS.
Eu tenho este script montado em um componente que desenvolvi. Pus lá no "edit.php" e inseri as tags do JS. Incorporei o script e boa.
Ocorre que no caso do User, ele é chamado através de uma classe e ai o porco torce o rabo.

Penso que não é bicho de sete cabeça, mas, não quero fazer errado.

O segundo problema é que estou montando um projeto no já conhecido custo zero. Não tenho como investir em um plugin Comercial.

Postar um comentário

Todos os comentários serão moderados e postados um tempo depois, comentários ofencivos serão deletados.