The social networking wall

Events happening in the community are now at Drupal community events on www.drupal.org.
Amazon's picture

One of the most popular features of social networking sites is the user profile wall. We have done a lot of experimentation with various modules to achieve this effect but haven't got a perfect social networking wall.

A wall needs several features, including:
1) Messaging, such as comments
2) Endorsement which could be implemented as variation of voting for a particular category.

We see promise in nodefamily, usernode, Voting Field for CCK, BuddyList. I am curious what combinations of modules have worked for others.

Cheers,
Kieran

Comments

We have had good luck with

slantview's picture

We have had good luck with buddylist, xtracker, creating custom user comment module and heavily modifying the profile module. I see some real promise with modules like CCK and Views however.

I also see a lot of promise with Drupal 5 and the new phptemplate method of overriding with a custom profile template based on path.

What changes to the profile module did you make?

Amazon's picture

Hi, what changes to the profile module did you make?

I would like to see what you found to be necessary and how we might be able to incorporate those changes into Drupal 6.

Cheers,
Kieran

To seek, to strive, to find, and not to yield

< a href="http://www.youtube.com/watch?v=COg-orloxlY">Support the Drupal installer, Install profiles, and module install forms
<a href="http://ia310107.us.archive.org/1/items/organicgroups_og2list/dru

Two cents...

niklp's picture

I reckon anyone considering Social Networks should have their eyes set firmly on two (or more) of the other groups here, namely: Profiles as Nodes, SEO and possible CCK as well. Definitely look at PaN though, that will be very powerful when it's all sorted out and ported.

Also there's some new stuff kicking about, from Eaton: custom_breadcrumbs, custom_links, custom_pagers which all look interesting, although I don't think Jeff has gotten round to writing any docs for them yet (hint, hint!) so I'm not entirely sure how useful they are.

PHP Profile Snippets

ericatkins's picture

I have found this page in the handbook especially informative: http://drupal.org/node/35728

--
Sojourn Church - the Hushed Casket

The first thing we did was

slantview's picture

The first thing we did was override theme_user_profile() in template.php to this:

function ourtheme_user_profile($account, $fields) {
  ob_start();
    include drupal_get_path('theme', 'ourtheme') . '/profile.tpl.php';
   $output = ob_get_contents();
   ob_end_clean();
    return $output;
}

Then a lot of the customization was due to needing to break out the registration process into multiple steps. Our client also had the requirement that editing the profile settings be split up to different pages.

I think with CCK and webform we might have been able to do this differently. In the future we will most likely see what can be done with other methods than rewriting the prebuilt modules, or in the sites/ structure of overriding modules.

steve

The UserNode Family

geddon's picture

I've been working on setting up the profile node family of modules over the last couple days without any luck. These include NodeFamily, NodeProfile, and UserNode. Everything seems to be working properly but nothing relates to anything else. In other words, I've been able to automatically create a "personal profile" but haven't been able to associate the custom node with the Usernode.

I'm under the impression that Drupal simply needs to treat the Users as Nodes, thus allowing us to associate photo groups, comments, the whole nine yards. Obviously this is easier typed than done.

(cR)

Possibly try messing around

anrahman's picture

Possibly try messing around with the guestbook.module in drupal-4.7 -- it provides a lot of the hooks already needed for a wall (afterall its just messaging back and forth).

Kieran -- will you be releasing the code for your wall in a module when you finish? I'd be very interested.

--
Aniq Rahman
http://www.technizzel.com/
http://www.cusn.org/
http://www.carmeet.com/
http://www.apptangle.com/
http://www.ratecornell.com/

Also -- check out

anrahman's picture

Also -- check out projectopus's shout.module -- they have code released for drupal 4.6 -- but they've implemented it nicely to their site for users. Also Tom over @ adrenalinehub.com has updated this module for drupal 4.7.

http://docs.projectopus.com/releases/shout

--
Aniq Rahman
http://www.technizzel.com/
http://www.cusn.org/
http://www.carmeet.com/
http://www.apptangle.com/
http://www.ratecornell.com/

Wall-to-Wall

ronoxQ's picture

Another feature I've seen on some sites (mostly Facebook) is the Wall-to-Wall feature. Basically, it gives a link on a user's comment (on a profile) that lets you see the recent wall-to-wall conversation between those users.

Reviving this old

a_c_m's picture

Reviving this old topic, specifically for the "Wall-to-Wall" functionality.

Currently looking at how you might implement this in D6 with Content Profile. I had thought it might be possible with a view and some hackish php in the view header to display the comment submit form, but not sure that will work so all new Ideas welcome.

Me too

greg.harvey's picture

Also re-visiting this...
http://drupal.org/node/300712#comment-1393588

I'll paste it again here:

Glad I found this. I've been giving it some thought and it feels like a module that extends the node object with a $node->recipient (which is just the $user->uid of the user the content is aimed at - the "wall" owner, if you like) and supplies a Views argument to allow the Views module to only show nodes for a specific $node->recipient.

I don't think it would take much. Obviously there'd need to be a little form-based magic to auto-populate the recipient field (probably just data and use an argument on the node/add page, e.g. node/add/wall-post/%uid and the value of %uid goes in to $node->recipient).

I might take a shot at this next week. If I do, I'll post back. Unless someone knows of something elsewhere already achieving this?

DrupalSN

michelle's picture

http://drupalsn.com/ as an awesome "wall" implementation. Unfortunately, it's a custom module that he hasn't shared back. :( But it shows what can be done with Drupal, at least.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

user comment wall

sirkitree's picture

I have an implementation of this that just creates a node for every user of a particular content type, say 'user_comment', and exposes the comment form for that node on the user's profile. Then people just use the comment form to create a 'wall of comments' for that user. This cuts down on the amount of nodes. Thoughts?

Edit: Sorry. You guys were referring more to the 'wall-to-wall' feature. But even there- you could probably use the parent id creatively.

Comments on profile node

michelle's picture

This is what APK does by default as a simple comment wall. It works fine just as a simple guestbook but doesn't have all the advanced features people have come to expect after using Facebook, etc. Unfortunately, sites like that have really raised the bar of what's expected by non techie users and Drupal isn't keeping up. :(

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

A little more detail

a_c_m's picture

@sirkitree: content_profile / bio would achieve the same thing right?

for what its worth, i think keeping comments as comments is a good idea.
With Views 2 there is less (or no) need to have comments as nodes.

My idea, was to have a view, which would list all the comments on from 2 nodes (e.g. profiles), filter them to only show the comments by two people (e.g. User A + User B) and then allow a user to post a new comment to one of the nodes, using a form at the top/bottom.

This would (i think) give you that wall-to-wall feature.

It would keep comments as comments and get around needing $node->recipient or similar customizations.

I see

sirkitree's picture

So the view would then just have to take two arguments (presumably), one for each UID. Then if user1 is looking at the view, the opposite arg is thrown to the form, so that they would be commenting on user2's node/'wall'. I shall experiment and report back. Thanks a_c_m!

custom argument handler

sirkitree's picture

It definitely seems like a custom argument handler would been needed. I can get so far as to generate this query:

SELECT comments.cid AS cid,
   comments.name AS comments_name,
   comments.uid AS comments_uid,
   comments.homepage AS comments_homepage,
   comments.comment AS comments_comment,
   comments.format AS comments_format
FROM comments comments
LEFT JOIN node node_comments ON comments.nid = node_comments.nid
INNER JOIN users node_comments__users ON node_comments.uid = node_comments__users.uid
WHERE (node_comments__users.name = 'sirkitree') AND (comments.name = 'superadmin')

... which will pull in comments on sirkitree's wall made by superadmin, but we also want to pull in comments on superadmin's wall by sirkitree and so an OR is needed, which will have to be done within a custom argument handler.

Here is a link to an export of the view - http://drupalbin.com/8548

How about, using 2 views,

a_c_m's picture

How about, using 2 views, then merging the results in code?

Alternatively yes, it needs a OR handler, will http://drupal.org/project/views_or do it?

not sure

sirkitree's picture

It seems to operate on the filters and I think we'll need to operate on the arguments, but i'll try it out. Thanks for the pointer.

Hmmm

greg.harvey's picture

for what its worth, i think keeping comments as comments is a good idea.
With Views 2 there is less (or no) need to have comments as nodes.

FWIW, I couldn't disagree more. ;-)

If the wall "comments" are nodes, you can bring the full power of CCK to bear which will allow us to start meeting some of the high expectations Michelle refers to. As long as comments are comments and comments are limited (Views is just the tip of the iceberg, sadly) then a wall made of comments is a chocolate teapot, IMHO. =(

Perhaps we should outline

a_c_m's picture

Perhaps we should outline what some of these high expectations are, i just logged into facebook and got :

  • Wall-to-wall where you are an owner of a wall, being able to post there and then, in a conversational style
  • Wall-to-wall where you are an observer, not owning ether wall, you then get a link bellow each comment, to write on the owner of the comments wall.

Any more?

Yes

greg.harvey's picture

I'm thinking less of the relational stuff, which is important but easier to define, and more about the expectation set by apps like the "Fun Wall"... e.g.

  • Ability to attach video
  • Ability to attach images
  • Ability to attach websites
  • Embed media from other websites
    etc.

As I noted earlier, this would all be covered off if the wall were nodes, because you could pick and choose from the myriad of available CCK field types and building a "Fun Wall" style Drupal app would be easy. Not so if it were comments.

Edit: to follow on, I guess I mean I believe it would be a mistake to try and prescribe what a wall does, beyond the basics - if you can allow CCK to work with the wall then people can define their own content types that are permissable on a wall - that would be how I would go about it. I would forget comments and use nodes and have an admin interface to allow admin to specify which content types had "wall" properties (think OG - in fact, OG is a near-perfect example of what I'm thinking of - think of the "wall" as a public OG with slightly more complex threading).

Sounds like a task for user

Flying Drupalist's picture

Sounds like a task for user reference.

You should be able to relate all kinds of posts to a user, with some kind of auto fill out. I think there are modules for that too.

Like it

greg.harvey's picture

Like your thinking... that could be a good approach. I'll look into it. =)

How did it go? I tweet'ed

a_c_m's picture

How did it go?

I tweet'ed the founder of DrupalSN (@thomjjames) to see if he would join in the discussion.

It didn't

greg.harvey's picture

Up to my neck in brown smelly stuff right now. Actually have a client who might want this, but they're such a nightmare I don't think they'll be a client much longer! =(

No time to work on this unless someone wants it, but it'll happen sooner or later - just a case of doing it then, unless someone beats me to it.

I talked to him

michelle's picture

I emailed him a while ago because a lot of what he did in his profiles is stuff I'd like to have in APK and I also asked about that comment wall. He's trying to build a business around what he's doing so doesn't want much copying. He also said the wall was a custom module and he hasn't contributed it back. So that seems like a dead end unless he changes his mind. It looks like he's shared a couple things he did so maybe he will. Hard to say. I was disappointed by my email exchange with him but I guess I can understand wanting to make money.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

Disappointing

greg.harvey's picture

That is a shame. I've always taken the view that publishing your module publicises your skills and you make money by being THE expert in that module. Sitting on it and not contributing it to the community tends to only make your module a maintenance burden for you while others reverse engineer what you've done anyway as a group, much quicker, so it's not like you end up with a unique product - in fact, ultimately your product is likely to be less robust if you're the only person available to bug fix it. Ho hum. Each to their own. Seems odd to work on an open source platform and adopt such an attitude though...... =(

Damn, I'd really like to work on this... I wish I had time. Grrr. This, CCK Gallery, Airborne, so many cool things I want to build for Drupal.

Well

michelle's picture

I'm pretty sure he's contributed other stuff so I don't want to be painting him as a bad egg or anything. :) Actually, probably better to let him speak for himself as I just have that one email exchange to go on and I don't want to be speaking ill of someone based on that. In hindsight, I shouldn't have posted what I did. I was confused and disappointed by his email but that doesnt' entitle me to speak for him.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

Implementation

andypost's picture

I seen "corkboard" as part of http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/friend/

project was closed but author still works on at http://www.netrift.com/content/statusbook

Suppose it's a good idea to implement this as module "thewall" or "wall" or "shout"
I plan to implement it in next few days as it requirement for my current project

Visions:
1) Wall post is record in it's own table (nodes and comments are bad - wall posts shoud be cleaned on cron)
2) Implementation should have trigger|hook a-la nodeapi and theme functions

Glad to hear any opinions

Guestbook

michelle's picture

Before you start up on another new project, please have a look at finishing up guestbook which is essentially a "wall" and has 2000 users on it already. It needs some love but better than starting a new and quite likely incompatable project unless you also are planning on writing an upgrade path for us. :)

I don't understand your #1. Why would you get rid of the posts on cron? My cron runs every 5 minutes... I don't want posts being deleted ever and certainly not every 5 minutes.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

But not nodes?

greg.harvey's picture

I personally think anything that takes content away from being node-based is a bad idea. Correct me if I'm wrong, but Guestbook doesn't use the node system, does it? For me it's a non-starter, no matter how many people use it. It's the pick of a poor bunch of modules that work "out of the box" right now, but that doesn't make it the future.

Be curious to see Guestbook 2.0, but if it still doesn't use nodes and there is no intention to go in that direction (allowing CCK, core Views integration without having to maintain your own set of handlers, etc.) then I would start a new project.

Like I say, I haven't looked at Guestbook closely for a while, but if it's still like it was I don't think it is a wall alternative - or at least, not one that I'm interested in and not one that is being built with the tools behind it to facilitate rapid development and ease of bespoke set-up, which is crucial.

The node problem

michelle's picture

The trouble with that is that there are as many people who think using nodes for stuff like this to be a horrible idea. People who don't want guestbook entries showing up in search results or having people add guestbook entries under "create content" or don't want the performance hit of a wall full of nodes. Yes, there are benefits to nodes but there are also drawbacks. If you have a large site with hundreds of thousands of nodes of real content, and then you toss in the profile as nodes solution which can add hundreds of thousands more, and then on top of that every status/guestbook/activity is a node, you're talking millions of nodes that's going to require some serious hardware.

So whether to use nodes is certainly a discussion piece but don't be so quick to rule out a non node solution.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

Sure

greg.harvey's picture

It's my personal choice, and our (company) commercial choice, but I assure you it isn't "quick". Without going in to detail, we've been refining our policy and module selection for years, so I, personally, won't be working on or using a non-node solution. Others will. To-may-to, To-mar-to (or whatever the proper phonetics should be) ... there's a song in there somewhere. =)

That's fine

michelle's picture

You're welcome to use whatever you like, of course. But the folks that are currently working on this are not likely to be using nodes so that just means more work for you if you end up needing it.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

keep comments as comments

a_c_m's picture

i +1 to this, as i've said before, keep comments as comments, "wall" posts are just comments and so should be treated that way. Views2 and soon fields in core will put comments, files and anything else on a level playing field with nodes. So imho there is no need to :

a) Make wall comments nodes.
b) Make wall comments their own bespoke datatype/database tables.

Keep them as comments and keep it simple.

Confused

greg.harvey's picture

You can already build a "wall" of comments on a user profile very easily. If that's all you want, there's practically nothing to do...? Unless I'm missing something. =/

Correct, using a profile as

a_c_m's picture

Correct, using a profile as node module (Content profile) you can do this, create a simple comment list, but people want / expect :

  • Wall-to-wall feature where you are an owner of a wall, being able to post there and then, in a conversational style
  • Wall-to-wall feature as an observer, not owning ether wall, you then get a link bellow each comment, to write on the owner of the comments wall.

This is what a social networking wall should allow, as a base, additional functionality can be built up from there.

Ahhh

greg.harvey's picture

Amazing how you can miss a huge piece of functionality when you are thinking about other details! I hadn't thought about wall-to-wall at all. Hehe. =)

Yeah

michelle's picture

We had a lengthy discussion of the plan on IRC the other day and the gist is to get something along the lines of what Facebook offers with their stream. Unfortunately, IceCreamYou can't start coding until the end of May so we have a bit to wait.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

Has there been any progress on the issue?

altar's picture

Sorry to revive the thread but has wall-to-wall been solved?

No

greg.harvey's picture

Not that I'm aware of. I haven't had an opportunity to work on it and I haven't seen any other activity.

Yes

michelle's picture

I haven't had time to play with it yet, but I'm pretty sure IceCreamYou said he got the wall to wall functionality working.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

Was he using content profile

Flying Drupalist's picture

Was he using content profile or something else?

No, FBSS

michelle's picture

Sorry, I was thinking this thread was about facebook style statuses. Didn't read up... Must be thinking of a different thread.

Anyway, pretty sure it's implemented in there.

Michelle


See my Drupal articles and tutorials or come check out the Coulee Region

Thanks ahah, I much prefer

Flying Drupalist's picture

Thanks ahah, I much prefer facebook style statuses, so great news for me.

How much do you think it would cost to develop?

altar's picture

If it's worth it we could set up a financing group for those interested

Any Workarounds

abhay1982's picture

Hey all,
I need this module is there anyone having success in this module .
If we have to implement it i am ready to do .All Suggestions are welcome

FBSS

basic features of wall in social network

madhu1218's picture

wall features:

1.Messaging, such as comments.
2.Endorsement which could be implemented as variation of voting for a particular category.
3.Wall-to-Wall, Basically, it gives a link on a user's comment (on a profile) that lets you see the recent wall-to-wall conversation between those users.
4. Wall-to-wall where you are an owner of a wall, being able to post there and then, in a conversational style.
Wall-to-wall where you are an observer, not owning ether wall, you then get a link bellow each comment, to write on the owner of the comments wall.
5. "Fun Wall"... e.g.
Ability to attach video
Ability to attach images
Ability to attach websites
Embed media from other websites etc.

Social Networking Sites

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: