Customazing joomla's registration form with fabrik

joezart

New Member
I found this info about how to customize the joomla's users registration form using fabrik's Form plugin joomla user:

http://fabrikar.com/wiki/index.php/Form_plugin_joomla_user

As far as I know (you let me know if I'm wrong) joomla uses the users_profile database table to add customized info to be collected from users. The reason for this is that in case of an update or upgrade joomla won't touch them.

I still need and want joomla (2.5 sorry) to take over the registration process, but need to capture some extra info so I will appeal to fabrik to do so.

OPTIONS:
1. Create one form using fabrik's form plugin joomla user and adding extra fields to the users table. and join it to the users_profile table, manually which I thick should not be a problem as I can use the userID in both table.

The thing is how to save data into the users_profile table... see the structure of this table and you will comprehen me... have NO idea how to make the elements work

Or

2. Create one form using fabrik's form plugin joomla user and adding extra fields to the users_profile table and join it to the users table.
Falling again into the same situation above mentioned


QUESTION:
What should I do?

Beside I'm very confused since the joomla's users table have 14 fields and only 6 are available for match with your form plugin, also there is an "user group field" which I do not know what to matched with?

Even more confused when the tutorial mention that fabriks create a new table so I need to add then a third option

3: where is this table created by fabrik... do I have to save my custom extra fields in this table?


P.D. other options very wellcome





 
I would not use the user_profile table, its simply not possible to integrate this with the way fabrik works.

Just create a fabrik list (and thus a corresponding form) that contains all the user information you want to collect.
Assign the juser form plugin to the form.
Then set the plugins options so that all the #__user fields are matched up to your fabrik form's elements.
Tessa from ostraining has a good tutorial on this:
http://www.ostraining.com/blog/joomla/fabrik-user-registration-form/

hth
Rob
 
I would not use the user_profile table, its simply not possible to integrate this with the way fabrik works.

Just create a fabrik list (and thus a corresponding form) that contains all the user information you want to collect.
Assign the juser form plugin to the form.
Then set the plugins options so that all the #__user fields are matched up to your fabrik form's elements.
Tessa from ostraining has a good tutorial on this:
http://www.ostraining.com/blog/joomla/fabrik-user-registration-form/

hth
Rob


Thanks Rob


One of the reason for which I want joomla to take over the registration process it is because I have a plugin called Spambotcheck.

The plugin protects against spambot attacks on either registration and login process by preventing spambots from register/login. It collects the IP and checks against several databases, such as projecthoneypot.org,
sorbs.net, spambusted.com, stopforumspam.com and spamcop.net.

Plugin uses the standard registration event (onUserBeforeSave) and the standard login event (onUserLogin) . So I do not know if is it still possible to use it with fabrik...

Rob do you think that I should create a users_profile2 table and joined to the users table????

Thanks
 
Joezart, with my novice understanding of how databases/tables work with sites, I don't see why you couldn't do that? You should just make your own custom user profile database table. That is a project on my to-do list as well. I will probably join it to my custom user registration table as well and see what happens.

Sometimes the best way to learn is by just trying it on a test site and see the outcome instead of asking. :)


By the way, thank you Rob for posting my tutorial! :)


Thanks Rob


One of the reason for which I want joomla to take over the registration process it is because I have a plugin called Spambotcheck.

The plugin protects against spambot attacks on either registration and login process by preventing spambots from register/login. It collects the IP and checks against several databases, such as projecthoneypot.org,
sorbs.net, spambusted.com, stopforumspam.com and spamcop.net.

Plugin uses the standard registration event (onUserBeforeSave) and the standard login event (onUserLogin) . So I do not know if is it still possible to use it with fabrik...

Rob do you think that I should create a users_profile2 table and joined to the users table????

Thanks
 
I am working a lot for the moment on a site requiring complex registration process, so I have tested many things around the registration process.

There are two ways to use Fabrik for the registration process :

  • Create a new table containing the required Joomla fields for registration (name, username, email,...) + the extra fields you need (address, birthday, phone, ...) and use the JUser form plugin to sync with the jos_users table
  • OR start with a new table/list "linked" to the jos_users table + a join to a new table containing only the extra fields (+ a user_id field to make the join)
The second solution is more coherent with the relational database model as you don't duplicate data like you do with the first solution, but the first one may be easier to pull for a rookie Fabrik user.


As always, it all depends of the scope of the application you are building.
For a small site with a small community of users, the first solution may be right, but if you are planning to have thousands of users, keeping the database lean and mean can be important. As my first project with Fabrik (1.0.6!), I ended up building a huge application and my lack of experience led me to a large amount of duplicate data which became difficult to handle, so now I tend to use table joins as much as possible.

Also now more and more site use the "cloud registration" (with the Facebook, Twitter, ... credentials). These users are added to the jos_users table but won't be in your Fabrik table (if you use solution 1) since the "sync existing users" is performed only once. Solution 2 avoid this issue.


To go back to the original issue, I just wrote the first part of a tutorial (in French for the moment, but there are a lot of screenshots) on building a registration form with Fabrik, following solution 2 : http://betterliving.be/Fabrik/remplacer-le-formulaire-d-enregistrement-de-joomla-partie-1.html


You can leave comments or question if you like.
 
Joezart, with my novice understanding of how databases/tables work with sites, I don't see why you couldn't do that? You should just make your own custom user profile database table. That is a project on my to-do list as well. I will probably join it to my custom user registration table as well and see what happens.

Sometimes the best way to learn is by just trying it on a test site and see the outcome instead of asking. :)


By the way, thank you Rob for posting my tutorial! :)

Sorry the best way to learn is not based on "let's try and let's see what happend"... the best way to learn is from those who have the experience, that save you time and frustations.


If is it bother you that I asked... well I'm sorry
 
I am working a lot for the moment on a site requiring complex registration process, so I have tested many things around the registration process.

There are two ways to use Fabrik for the registration process :

  • Create a new table containing the required Joomla fields for registration (name, username, email,...) + the extra fields you need (address, birthday, phone, ...) and use the JUser form plugin to sync with the jos_users table
  • OR start with a new table/list "linked" to the jos_users table + a join to a new table containing only the extra fields (+ a user_id field to make the join)
The second solution is more coherent with the relational database model as you don't duplicate data like you do with the first solution, but the first one may be easier to pull for a rookie Fabrik user.

As always, it all depends of the scope of the application you are building.
For a small site with a small community of users, the first solution may be right, but if you are planning to have thousands of users, keeping the database lean and mean can be important. As my first project with Fabrik (1.0.6!), I ended up building a huge application and my lack of experience led me to a large amount of duplicate data which became difficult to handle, so now I tend to use table joins as much as possible.

Also now more and more site use the "cloud registration" (with the Facebook, Twitter, ... credentials). These users are added to the jos_users table but won't be in your Fabrik table (if you use solution 1) since the "sync existing users" is performed only once. Solution 2 avoid this issue.

To go back to the original issue, I just wrote the first part of a tutorial (in French for the moment, but there are a lot of screenshots) on building a registration form with Fabrik, following solution 2 : http://betterliving.be/Fabrik/remplacer-le-formulaire-d-enregistrement-de-joomla-partie-1.html


You can leave comments or question if you like.

Thank you very much jfquestiaux for your replay; I think the main reason of a forum is to learn and help each other... a thing that TESSA seem not to.

I found very interesting your guidance that I rode it several times. So taking advantage of your experience I will go with the second option as is better be preparer to handle as you mentioned a large amount of user (you never know). Of course I will be learnning little by little up to the point I achived what I need.

If is it not bother you I will be asking questions about this issue but... for the moment I will do all you mentioned on the second option

once again thank you very much
 
I am working a lot for the moment on a site requiring complex registration process, so I have tested many things around the registration process.

There are two ways to use Fabrik for the registration process :

  • Create a new table containing the required Joomla fields for registration (name, username, email,...) + the extra fields you need (address, birthday, phone, ...) and use the JUser form plugin to sync with the jos_users table
  • OR start with a new table/list "linked" to the jos_users table + a join to a new table containing only the extra fields (+ a user_id field to make the join)
The second solution is more coherent with the relational database model as you don't duplicate data like you do with the first solution, but the first one may be easier to pull for a rookie Fabrik user.


As always, it all depends of the scope of the application you are building.
For a small site with a small community of users, the first solution may be right, but if you are planning to have thousands of users, keeping the database lean and mean can be important. As my first project with Fabrik (1.0.6!), I ended up building a huge application and my lack of experience led me to a large amount of duplicate data which became difficult to handle, so now I tend to use table joins as much as possible.

Also now more and more site use the "cloud registration" (with the Facebook, Twitter, ... credentials). These users are added to the jos_users table but won't be in your Fabrik table (if you use solution 1) since the "sync existing users" is performed only once. Solution 2 avoid this issue.


To go back to the original issue, I just wrote the first part of a tutorial (in French for the moment, but there are a lot of screenshots) on building a registration form with Fabrik, following solution 2 : http://betterliving.be/Fabrik/remplacer-le-formulaire-d-enregistrement-de-joomla-partie-1.html


You can leave comments or question if you like.

Wow! Great information. Thank you for providing this. :)
 
I am working a lot for the moment on a site requiring complex registration process, so I have tested many things around the registration process.

There are two ways to use Fabrik for the registration process :

  • Create a new table containing the required Joomla fields for registration (name, username, email,...) + the extra fields you need (address, birthday, phone, ...) and use the JUser form plugin to sync with the jos_users table
  • OR start with a new table/list "linked" to the jos_users table + a join to a new table containing only the extra fields (+ a user_id field to make the join)
The second solution is more coherent with the relational database model as you don't duplicate data like you do with the first solution, but the first one may be easier to pull for a rookie Fabrik user.


As always, it all depends of the scope of the application you are building.
For a small site with a small community of users, the first solution may be right, but if you are planning to have thousands of users, keeping the database lean and mean can be important. As my first project with Fabrik (1.0.6!), I ended up building a huge application and my lack of experience led me to a large amount of duplicate data which became difficult to handle, so now I tend to use table joins as much as possible.

Also now more and more site use the "cloud registration" (with the Facebook, Twitter, ... credentials). These users are added to the jos_users table but won't be in your Fabrik table (if you use solution 1) since the "sync existing users" is performed only once. Solution 2 avoid this issue.


To go back to the original issue, I just wrote the first part of a tutorial (in French for the moment, but there are a lot of screenshots) on building a registration form with Fabrik, following solution 2 : http://betterliving.be/Fabrik/remplacer-le-formulaire-d-enregistrement-de-joomla-partie-1.html


You can leave comments or question if you like.

Hi jfquestiaux

I went to your tutorial and used the google translator so some things were missed at traslation... specially the last part in which you substitute the joomla's user's registration form by fabrik's.

I think I misunderstood you cos u mentioned that the option 1 using fabrik's JUser form plugin to sync with the jos_users table duplicate records (totally agreed). However in your last paragraph you said that the tutorial has the instruction for building a registration form with Fabrik, following solution 2.

QUESTION:
By using the Juser fabrik's plugin are we not duplicating records? (a thing that we want to avoid)

I think I setted up the elements according to your tutorial but like I said something things could got lost in translation so I wonder if I can send you or post here what I did for you to give the "final blessing" ;D
 
What I meant by "duplicate records" was that you store twice the same data for the same user (specifically the username, the email and the password), but it is not the JUser plugin that creates those duplicates, it is merely the way the tables are designed in solution 1.

With "solution 2", you won't create duplicates since you are directly in the jos_users table and the JUser plugin is necessary to go through the registration process (send validation email, check access rights,...).
 
What I meant by "duplicate records" was that you store twice the same data for the same user (specifically the username, the email and the password), but it is not the JUser plugin that creates those duplicates, it is merely the way the tables are designed in solution 1.

With "solution 2", you won't create duplicates since you are directly in the jos_users table and the JUser plugin is necessary to go through the registration process (send validation email, check access rights,...).


Hi jfquestiaux

First off... Thanks for all your guidance
So far I have followed your instructions
I have created a user's registration form using fabrik and joined the jos_users list to jos_user_profiles2 and another table that I have jos_country

So far everything seems to be working fine... thanks

I have 3 new questions for you related to this topic

1. The password element shouldn't have a notempty validation ?

2. If I want to customize the email notification send by joomla I think that I have mark by pass email joomla's email to yes... but I do not see the option on where to create the new email.

3. One of the reason for using the joomla's registration is that I have a plugin called spambotcheck, The plugin protects against spambot attacks on either registration and login process by preventing spambots from register/login. It checks against several databases, such as projecthoneypot.org,
sorbs.net, spambusted.com, stopforumspam.com and spamcop.net.

Plugin uses the standard registration event (onUserBeforeSave) and the standard login event (onUserLogin) Is there a chance, that fabrik' registration form uses these events so the spambotcheck could be triggered.

Thanks you very much jfquestiaux







 
  1. The "not empty" validation is built in the password element, so you don't need an extra one
  2. You can une the language override function of Joomla to write a customized message
  3. I don't know about this. I think the fabrik plugin somehow use the registration process of Joomla so it may trigger the same events but I really don't know. If not, there may be other ways to trigger them but Rob or Hugh should answer this.
PS : you don't have to quote each post because it makes a long thread to read.
 
Hi jfquestiaux,

I think this is the best tutorial on how to replace the Joomla Registration form, i would love to see the part 2 if you have some time (i don't speak French but i managed with Google Translator to get everything right! :) )
 
On popular request (thank you to those who appreciated part 1), I published the second part of the tutorial. And the subject is so vast, there will be room for a third part!
 
We should trigger all the same plugin hooks that the standard J! user registration does. So we should fire onUserBeforeSave. We won't fire onUserLogin, as it's actually J! handling the logging in part, so it should fire without us having to do anything if you have auto-login set.

If you find this not to be the case, let us know.

-- hugh
 
On popular request (thank you to those who appreciated part 1), I published the second part of the tutorial. And the subject is so vast, there will be room for a third part!

Hi jfquestiaux,

I am not able to find part 2 of your tutorial. I have followed part one but would like to add some custom fields and your tutorial was helpful in getting me this far. Did you take part 2 down?
 
We are in need of some funding.
More details.

Thank you.

Members online

Back
Top