Hi all,

I'm working on the new site for a Dutch Linux user group. We organize small conferences every two months. For this I'm trying to figure out how I can put together a new contenttype, which can display all the information we have for these. Every time the programm can be different. So the contenttype should be flexible enough to create a page based on the input.

Each conference has at least one session room and a main meeting room. Lectures/workshops are being given in the session rooms, which may differ in length. For each lecture we want to display the speaker, his/her bio, the subject and a summary of the talk.

One example is this page: http://www.nllgg.nl/bijeenkomst_20120609

At this point we are not worrying about how the page is going to look like, its just about storing the data right.

So I'm looking for some hints or suggestions from the pro's. ;) I've already have several modules installed that might help with this, but if you think I might need more, that's ok.

Thanks in advance!

Comments

chunty’s picture

This look to me to actually be more like a couple of content types.

Something like:

1) An event which contains your core event data
2) A program entry which has a start and end time and location (which might be another node type)

You can then use the node relationships module to allow you to "attach" program entry nodes to specific event nodes

Does that help?

rvansleen’s picture

Thanks for thinking with me! I was thinking earlier about something similar. However, I dislike the idea of having these seperate types, that also need to be filled in seperatly. That wouldnt be much intuitive and might confuse the people who will be entering the info. But putting it together in one type might be a real pain, since I need to have it as flexible as possible.

I would really appreciate, if you (or someone else) have something for me to look at.

chunty’s picture

Ii know what you mean. I don't have anything you can look at right now but you don't have to fill these in in isolation. The node relationships module can work with modal frame to give a sense of inline completion. So you would only "add" one type of item you could add the other bits from te same form.

rvansleen’s picture

Hey chunty, thanks again for your reply. Is this the module you are referring to?
: http://drupal.org/project/noderelationships
It seems to me that it isn't written for D7.

I stumbled on the module group_fields, in my search for a resolution. Maybe that one can help me, need to try it out I guess.

chunty’s picture

ah you're on d7, never mind - I'm sticking with d6 at the moment as a few key modules I use like this and taxnomoy menu are still missing

C

fejn’s picture

Take a look at the Entity Registrations module. It provides a basic registration form for you, but you can specify your own fields for it as needed. It works with Views and the Field Collection module, which will let you add your own fields/content types to the form as needed.

rvansleen’s picture

Thanks, I've seen that one before but it doesn't help me creating the contenttype for the page I want. It's a registration module, which comes in sight when I want to let my visitors to be able to let us know they'll be attending. At this point I'm only trying to create a page with the information about the event.

The field collection module looks promising too, though.

fejn’s picture

Take a look at the Date module; it has ways of handling dates with start and end/repeating times which you might find useful

rvansleen’s picture

So, after a few days trying things out (adding/removing modules, creating/deleting fields&views), I came up with a result that begins to look like what I had in mind. I'll explain what I have done and maybe someone cares to have a look and advice me if I could have done something better.

In my contenttype I have created the fields:

  • Body, as Long text and summary
  • Lezing, as Field collection
  • Datum, as Date

The field collection Lezing consists out of the fields:

  • Onderwerp, as Text
  • Spreker, as Text
  • Spreker's bio, as Long text
  • Samenvatting lezing, as Long text
  • Zaal, as List (text), with only two options for now
  • Tijd, as Field collection

The field collection Tijd (Time) consists out of the fields

  • Uur, as List (text)
  • Minuut, as List (text)

Why these two as text lists, you might ask: this is because the Date module doesn't provide the ability to have a field as Time without a year. Also, having the list as integer makes Drupal to output the digits without a leading zero, even if you put it in the list (which makes sense, but is a bit annoying).

I've enabled the 'Node template' page in Panels, where I created a variant for my contenttype Bijeenkomst. Selection rule is obviously This panel will be selected if Node being viewed is type "Bijeenkomst". Layout is set to Single column.
The content is set with three "contents" (probably going to be expanded later on):

  1. "Node being viewed" Body (i.e. Field: Body)
  2. View: Lezingen views: Lezingen schema
  3. View: Lezingen views: Lezingen content

As you can see, I created two View panes, one for the schedule ("schema") and one for the content .
Schema: Format: table, Fields: (all Field collection items) Tijd, Spreker, Onderwerp, Zaal
Content: Format: Views Accordion, Fields: (all Field collection items) Onderwerp lezing, Spreker, Spreker's bio, Samenvatting lezing

That's it! The result is viewable at http://test.nllgg.nl/content/bijeenkomst-1-januari

I probably need to tweak it a bit further. What I really love to get going is to link from Onderwerp in Schema to Content schema, opening the right row (setting 'Navigation' on in the accordion settings won't help much afaics). Another thing I would like to add is to be able to choose between adding a 'Lezing' or some other eventtype (like a lunch or something).

rvansleen’s picture

Ok, so I learned another thing today. The setup as described as above would end up having **all** the field collection fields showing up. Oops! This made me realize I had approached the way I setup the Views incorrectly. I had to use context and relationships. This made me hit a "minor" bug #1401184: Relationship on field_collection field (and adding a field from field_collection) results in views SQL syntax error. After reading comment #7 on that page, I figured I might be able to bypass it. And I did, hooray!

So, what I have done differently (with help of this article):
I created a new Views, called "bijeenkomst" and this time I choose Show content of type bijeenkomst and skipped creating a page. Instead, in the next screen, added a Content Pane. Next I added a relationship with Content: lezing and a contextual filter with Content: nid. Configured the contextual filter with

  • Checked 'Specify validation criteria'
  • Validator: Content
  • Content types: bijeenkomst
  • Filter value format: Node ID
  • Action to take if filter value does not validate: Hide view

Now I made sure the context is accepted as argument input:

  • Argument input: Edit
  • Choose 'From context' for 'Content: Nid source'
  • and 'Content ID' for 'Required context'

Saved the View and went to the 'Node template' panels configuration. Added content to Middle column 'View: bijeenkomst' from 'View panes'. Now I need to configure the pane, only option to 'Content: Nid' is 'Node being viewed', so that's easy. After that, I'm done.

Only thing I needed to do is make the panes at my new bijeenkomst views look the same as from my earlier field collection views and I recreated the situation I had before, but now the views only produce the output I want for the page I'm viewing.

It did cost me some time to create this behaviour, but it was worth it. Also, I'm writing this for others to read, so maybe someone can learn from my experience. If other people have ideas on improving, please let me know!