The Entity Registrations module provides the ability for users to register for any entity in Drupal. Registrations are fieldable entities and can collect any information you need from your registrants. By attaching a Registration field to any entity, you enable users to fill out a form containing customized fields to register for that entity.
Entity Registrations currently has the following features:
- Registrations are fieldable entities, so collect any information you need from your registrants
- Unlimited types of registrations, or bundles.
- Enable registrations of a given type/bundle on any entity type or individual entity through a registration field.
- Per entity registration settings like capacity, reminders, etc.
- Send broadcast emails to registrants.
- Allow a single user to register multiple registrants.
- Integration with Views and Rules via Entity API.
Registration Common Configurations
This section is intended to be a starting point for site builders and themers to help with common registration configurations that enhance the end user experience.
- User Profiles - Showing registration related content on user profiles.
Entity based registration system for Drupal.
- Download and enable the module.
- Create at least one registration bundle (or type) at
/admin/structure/admin/structure/registration/registration_types, much like you would a content type.
- Add a registration field to any entity you want to enable registrations
for. Note the display options: default, link to the registration form,
and embedding the actual form.
- When you add or edit an entity, select the registration bundle you want to
- Registrations are now enabled for the entity and you can configure the
registration settings via a local task.
- Enable: Turn registrations on / off for a given node.
- Capacity: The maximum number of registrants for a given node. Leave at 0 for
- Allow Multiple: If selected, users can register for more than one slot for
- Send a reminder. Checking this exposes reminder date and message template
Usage / Features
- Manage registrations for any enabled entity.
- Per entity registration settings.
- Broadcast emails to all event registrants.
- Associate any field types to a registration to collect the information needed
for your event.
- Send reminders on a given date.
Integrations for more functionality
This is where things get interesting. You can add any Drupal field to customize
your registrations. The fields widgets will automatically appear on the register
form and will be available from a registration detail page.
Not happy with the default tabular list of registrations? No problem,
registrations and their fields are all Views friendly. You can override the
default event registrations list, create additional ones, etc.
Rules is a great companion for Registration to send confirmation emails, event
Once you've created an node with a registration attached to it, you can also register for that event using a rule.
Perhaps you'd like to automatically register the author of a piece of content to that node. For this example, I've created a content type "Event." In order to register the author of the node to that node, a rule must first create a new piece of content with the "Registration" type pointing to the node just created. So the first step in the rules creation process is to set the event to be "After saving new content."
To make sure you're only triggering this rule for the Event content type, add a condition "Content is of type"="Event".
For your actions, you'll start by creating the new entity of type "Registration." Select the correct registration type from the list of types in the dropdown (these are pulled from the the list of registration types you created on the Registration configuration page). In the Host Entity ID fieldset, select the Node id of the item you just created. Then give the Host Entity Type the value of "node" and give the entity you just created a meaningful name. (I used "Created entity").
This is not enough to successfully register the user for the event, however. To do that, you need to collect three more pieces of information (machine name appears in parenthesis). These are the minimum fields that must be entered to create a successful registration:
- Registration Author (author) -- the user id of the person who is reserving space for the registree
- User (user) -- The user id of the person who is being registered for the event (can be 0 for an anonymous user)
- Count (count) -- The number of spots taken by the registree (can be set to a static amount, like 1)
Registrants via Field Collection
Attaching a field collection field to a registration allows you to collect
granular information for multiple registrants for a single registration. Here’s
how it works.
- Download and enable Field Collection.
- Add a field collection field to your registration entity.
- Add any fields that you want to collect to the field collection entity and
configure widget and display settings. You might also want to consider field
collection table to create tabular lists of registrants.
That’s it. Now, when a registration is added, users can complete one or more
field collections for each registrant.
- Tighter integration with Field Collection for a more robust registration ->
registrant system. Namely, mapping the registration capacity to the number of
field collections per registration.
- Registration Feature that bundles everything you need in a tidy package to
start using registrations out of the box.
Technical explanation of Entity Registration's Architecture
Registration Types: Bundles analogous to content types that are fieldable. They define which fields an individual registration needs to store. Used to create the registration form that's attached to an event.
Individual registration: An entity (analogous to a node) that contains field data, for the fields defined in the registration type. Eg ("Bob's t-shirt size", bob's meal preference)
Registration State: Analogous to signup status in Drupal 6, Bundles are used to manage registration workflow settings. Reason to use bundles is so that registration states are exportable, weight-able. There are no individual registration state entities.
All registration bundles have a property called state that references a registration state. It's optional to display that property to the user but it always exists.