The social networking wall

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

Login to post comments

We have had good luck with

slantview's picture
slantview - Tue, 2007-01-23 04:12

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
Amazon - Thu, 2007-01-25 17:51

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
NikLP - Tue, 2007-01-23 12:43

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
ericatkins - Thu, 2007-01-25 16:46

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
slantview - Fri, 2007-01-26 01:14

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
geddon - Fri, 2007-01-26 21:15

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
anrahman - Thu, 2007-02-01 11:13

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
anrahman - Thu, 2007-02-01 11:16

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 - Sat, 2007-02-17 19:47

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 - Wed, 2009-03-18 01:44

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 - Tue, 2009-03-24 09:53

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 - Tue, 2009-03-24 14:31

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
sirkitree - Tue, 2009-03-24 17:39

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 - Wed, 2009-03-25 20:19

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 - Wed, 2009-03-25 19:20

@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
sirkitree - Wed, 2009-03-25 20:17

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
sirkitree - Wed, 2009-03-25 22:53

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 - Thu, 2009-03-26 09:49

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
sirkitree - Thu, 2009-03-26 17:50

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 - Thu, 2009-03-26 18:14

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 - Thu, 2009-03-26 19:10

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 - Thu, 2009-03-26 19:45

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 - Sat, 2009-04-04 00:13

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 - Sat, 2009-04-04 07:34

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


How did it go? I tweet'ed

a_c_m - Wed, 2009-04-22 21:54

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 - Thu, 2009-04-23 08:34

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 - Thu, 2009-04-23 14:24

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 - Thu, 2009-04-23 17:38

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 - Thu, 2009-04-23 18:12

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
andypost - Fri, 2009-04-24 21:30

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 - Fri, 2009-04-24 21:39

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 - Sat, 2009-04-25 11:32

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 - Sat, 2009-04-25 13:15

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 - Sat, 2009-04-25 17:24

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 - Sat, 2009-04-25 18:39

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 - Sat, 2009-04-25 22:43

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 - Sat, 2009-04-25 23:34

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 - Sun, 2009-04-26 09:49

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 - Sun, 2009-04-26 10:40

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 - Sun, 2009-04-26 13:43

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 - Sat, 2009-06-13 20:34

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


No

greg.harvey - Sun, 2009-06-14 08:36

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 - Sun, 2009-06-14 13:04

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 - Sun, 2009-06-14 13:34

Was he using content profile or something else?


No, FBSS

Michelle - Sun, 2009-06-14 15:42

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 - Sun, 2009-06-14 18:18

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


How much do you think it would cost to develop?

altar - Sun, 2009-06-14 10:11

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