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:
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
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.
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.
Mais informações:
https://docs.joomla.org/Form_field
https://www.sakic.net/news/custom-fields-for-joomla-registration-with-ajax-register/
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.