Did you ever think about make guestbook using the node-system?
This would have many advantages as the following issues could be closed immediately:

and guestbook-module would participate on all the advantages of the node-system.


ardas’s picture

Sounds clever.

sun’s picture

Status: Active » Postponed
sun’s picture

Title: Make Guestbook entries nodes » Make Guestbook entries nodes/comments

IMHO the real question here is why guestbook posts are not comments. Drupal's comment system already provides a scalable threading system, and many modules in contrib already integrate with it. So each guestbook would basically be a guestbook node with some comments attached.

However, due to the current implementation of comments in Drupal core there are some caveats:

- Comments provide only minimal hooks, and are directly rendered (attached) below a node's body.
- Conditionally posting a reply to a comment to the current guestbook or another guestbook is probably hard to implement, if possible at all.
- Adding custom fields to comments would only be possible via form_alter(), and not via CCK.

That's much, I know. However, if guestbook posts were nodes, we would have to fork the threading system of comment.module in Drupal core for Guestbook. That would be a big task, too.

Michelle’s picture

I've been thinking about this a bit and I'd like to see them be both nodes and comments. What I'm envisioning is sort of a mini forum on the user page. So each main comment is a node and then replies to that are comments. I know we had talked some about the whole facebook idea but, honestly, I find the idea of reading a conversation between guestbooks confusing. Maybe it's because I'm not into the whole facebook/myspace thing so I may be alone in this. But I really like the "personal forum" model for a guestbook. Then people can subscribe to the guestbook "thread" they started to get notified of responses rather than having to add the responses to their guestbook so they see them.

Just my $.02


Zagreus’s picture

I have to agree with you - although that is the way Facebook works, maybe they know something we don't? The personal forum seems to make the most sense, and the idea of subscribing seems to overcome the problem of loosing track of a conversation which seems to happen alot on facebook (I'm not on any of the other sites). Could that be the way the yoof of today think? :)


GiorgosK’s picture

to answer some of your concerns from #3

copying and pasting from

the solution I created for myself without using any code
1. created a new content type "guestbook"
2. changed the appropriate comment settings
2a. and enabled "Anonymous posters may leave their contact information"
3. enabled core module "profile"
4. at admin/user/profile added a new field "url"
5. created a new "guestbook" called guestbook
5a. and gave anonymous users permission to post comments
6. (optional) also enabled "admin block" contributed module for comment moderation


if you make guestbook a node, guestbook entries become comments
and can use all the great contrib modules that are dedicated for comments

enabling the profile core module lets you also include more fields to the commenting form
(as I added URL on steps 3 & 4 above)

you can probably look at the http://drupal.org/project/nodeprofile
on how a profile is becoming a node and maybe there is a way to
enter more fields to the comments form.

sun’s picture

Still tinkering about this. However, one conclusion in the meantime:

Q: Why can't we simply use nodes for user guestbooks?
A: Because nodes are user-generated content. If a user would not create a 'guestbook' node, she would not have a guestbook. Sure, we could follow the Bio way - creating and ensuring a guestbook node for each user upon registration and accessing the user profile. However, that would still add a lot of overhead to the nodes table, because from 100.000 users, only a few might actually have guestbook entries, but we still need to add the overhead of 100.000 nodes to the system to be able to display a guestbook (hint: intro text) at all.


Michelle’s picture

Going back to my #4, and as I just said on IRC, it's not the guestbook itself I'd like to see as a node but the entries. That would allow conversations to play out in one place instead of the back and forth between guestbooks.

Now, it could be just that I'm from an older generation that hasn't grown up on MySpace, but this is what happens when I use the guestbook on my site:

1) New user joins
2) I leave a welcome message in their guestbook and try to ask a question, if I can, to get them talking.
3) They can answer back either as a comment on that entry (3a) or go over to my guestbook and answer 3(b)
4) If (3a), I'm stuck since there's no way to comment on a comment. I can leave another new entry, but that looks silly. Plus, nothing notifies me that they left the comment and I have to keep going back to check. If (3b) then we go back to #3 for my response with the same problems.
5) I find this whole way of communicating annoying and PM them to continue the conversation there.

How I would like it to work:

1) New user joins
2) I leave a welcome message and ask my question(s). This creates a new node authored by me and I can subscribe to any followup comments using other contribs. We also need a mechanism to notify the guestbook owner.
3) Guestbook owner can comment right there on that node using the normal commenting system. A conversation ensues, all in one spot.
4) If the user decides they want to say something unrelated, they can always start a new conversation on my guestbook.

Benefits: Showing a guestbook can just be a view. Interesting conversations can be highlighted elsewhere because they are nodes. You get all the "stuff" that goes along with nodes and comments such as adding media, theming, etc.

Con: On some sites, guestbooks can really add up to a lot of nodes.


taite11’s picture


Aldus’s picture

I give my big +1 to this, it would be very good to have support for views. Both node and comment solution would be a good evolution

dixon_’s picture

I am working on a module for making guestbooks into nodes. This is for a client of mine, so unfortunately I haven't the time nor resources to coordinate a fork here in this queue. I will publish my work on do once I'm finished and have fixed my CVS account.

In the future I can see a merge (or deprecation of my module) when a node based system is planned for this original guestbook module.

sun’s picture

@dixon_: If that is the case, then do not even think about creating a separate project on drupal.org, please. Instead, alter the Guestbook module in-place, try to change as little as possible, and when you're done, attach 1) a patch and b) your module to this issue. That way, someone else might be able to learn from the changes you needed to apply, and can work on this further.

Michelle’s picture

I second Sun on this. The last thing we need is another guestbook module so that users have to figure out which to use. Better to improve the one we have.


dixon_’s picture

Yeah, I absolutely agree. I've been rethinking a bit, and for now I have mashed together a node guestbook for my client's usage. This guestbook module needs quite a bit of rewriting, more like a complete rewrite to implement it as nodes. So a patch of some kind wouldn't make sense, would it?

Here's another solution: There are quite some modules that works in a similar way. Lets just take this module (if implemented as nodes) and the content_profile module as an example:

  • They limits each user to a certain amount of nodes (usually one) of a certain type.
  • They integrates with the user profile page (either direct or as local tasks).
  • It's useful for both modules to have their nodes created upon user registration (the user shouldn't actively need to create their guestbook or profile).

Both solutions mentioned above could easily use a central module for this. This way, with no code (or a minimal extension module), you could build your own solution for "node profiles", "node guestbooks" or "node whatever".

Does it make sense? What do you think?

scott859’s picture


AdriaanV’s picture

Any news on this? The biggest pro for me with entries as nodes would be possibility to integrate with Smileys, CCK, etc. Esp. with smileys it's really too bad there's no support for this right now, and no workaround that I've found.

Michelle’s picture

Smiles work in the guestbook. Just set the input filter to one that processes smileys.


AdriaanV’s picture

Indeed, that's something I had done, it's a system that works fine but it's not ideal. On nodes the smiley panel can be shown with the body field when creating the entry, so with clicking on them they'll appear directly in the field. This is a functionality that would be very nice on the guestbook, but at this moment isn't possible, right? Maybe it is possible to add the panel to the guestbook, I'm still learning. :p It's not really that big a deal, though, it *works* through the input format.

Michelle’s picture

Oh, well, that doesn't necessarily mean Guestbook needs to use nodes. It means Smileys needs to be more versatile to attach to text areas other than just nodes and comments.

I'm starting to move away from my "everything should be nodes" stance. Guestbook I'm still on the fence about. I can some benefits but I don't know if it's enough. Would be interesting if guestbook, privatemsg, activity, and other similar modules would jump on the "micronode" idea. But that takes a whole bunch of people working together and so far I haven't seen much interest.


frankcarey’s picture

I'm starting to move away from my "everything should be nodes" stance.

Yeah, the lullabot folks took up this issue recently on their podcast. http://www.lullabot.com/audiocast/podcast-64-do-nodes-still-matter. I wouldn't say that they settled the issue, but it looks like "everything as nodes" was brought about because hooks were only available for nodes, but things may be changing on that front with views2 able to handle non-node views, and the theory that cck should be able to make non-node content types as well.

Some practical reasons for NOT using the node system is that the node table is fat enough (as was mentioned already), but it should also be mentioned that ease of importing and exporting is a factor.... uninstall the module... drop the guestbook table, easy! need to bring in comments from another system?... don't worry about screwing up your node table, you can always start over if you screw up. You can even restore just that table on a live system (very difficult if users are actively adding to the node table). If every content type was it's own table, it would really make a lot of syncing / importing much easier.

For wall-to-wall functionality, the easiest way would be to just list posts between two walls (users) in chronological order. In the facebook model, you wouldn't reply on your own page, you'd reply on the other profile page (though you could have a popup to make this even faster). I think this keeps unnecessary containers to a minimum.. if you change topics, you still get the same threaded convo between the two of you. Where this wouldn't work is a 3way conversation, but i don't think the traditional wall works like that anyway.

Folks may not like the facebook model, but with so many of it's users, and now the availability of facebook connect to easily transition users to drupal, having a exact copy of functionality available to those users could be huge ui benefit.

Michelle’s picture

Yeah, as much as I hate the facebook style, I've got to admit it's what users are looking for. And there's millions of them and only a handful of old dinosaurs like me who actually want their conversation in one place and not spread over two guestbooks. (Seriously. Does anyone actually try to read a wall? It's ridiculous.)

It's up to Sun, of course, but that's the way I would go if I were the maintainer. Unless I was being stubborn and holding out for what makes sense vs what is popular. ;)


halloffame’s picture

Any progress on this?

wxman’s picture

One of my customers just asked me if there was any way to have her posters get an email notifying them when she answers their entry. I guess this answers her question.

DynV’s picture


sun’s picture

Title: Make Guestbook entries nodes/comments » Use entities for guestbooks and guestbook entries

Re-titling for D7.