This question shares a lot of features with a question I asked a year ago (CiviEvent: how to collect different custom data for different event participant roles?) but I'm still faced with a use case I can't solve :-(
Here's the scenario: a user registers herself and a guest for an event (there is an Attendee profile used to gather info on the main registrant, and a guest profile used for the Additional Participants forms which collects different data that is specific to the Guest). Later, the user realizes she'd like to register another guest. How does she do that? (Ed by Pete) She cannot use the form again without being presented with the primary participants fields, whereas we only want to collect the data for the Guest profiles
I thought I could use the "Event Registration Based on Participant Roles" extension, and create a link to a blank registration form sepcifically for signing up a participant with a Guest role. But although the extension works fine to set the participant role for the Guest registration form, the form itself displays the Attendee profile, not the guest one! I cannot for the life of me figure out how to specify a different profile than the default one for a registration form.
What I've tried:
-- Form hooks only allow me to manipulate the output on the form -- I can't remove the underlying Attendee profile fields or change what profile is included when the form is built.
-- I can't link directly to the AdditionalParticipant.tpl form, because it only functions within the data context of the main registration process.
-- I've even tried hacking the source code Register.php to conditionally load a different profile based on user role, but it seems the extension is also just using the buildForm hook, so at the PHP level I can't tell the difference between a regular registration and someone registering a guest directly. I can't determine when to load the guest profile instead of the attendee profile.
-- The only workaround I've come up with is to "allow multiple registrations with the same email address", and created a $0 priceset option "already registered, just updating my registration data". So people can come back to the main registration form, select that no-cost option, and fill out more additional participant/guest forms. Of course that's not very user friendly, and gets ugly in the reports, looking like the same attendee has registered multiple times.....
This is a Joomla system so please don't suggest Webforms -- I know this would be much simpler using Webforms but I don't have Drupal available to me.
Any and all ideas welcome.