Social site created with Drupal : here is what I did and used

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

Hi,

I'd like to get some constructive feedback and to provide you with information on a site I am soft-launching : Recipe blogs . Attached are some screenshots. The premise of the site is to mix & match both a "directory"-type site and a "digg"-like site.

The site allows

  • Bloggers to i) register their site & get a backlink ii) add their RSS feed to syndicate their content and ii) add the voting widget onto their blog
  • Visitors to i) find recipes by tag, search or by visiting the recipes/ section which is digg-like ii) vote on praiseworthy recipes iii) save favorite recipes to a personal cookbook
  • FeedAPI and FeedAPI_mapper to import the RSS feeds and to extract the tags from the feed itself (which aggregator can't do) at http://drupal.org/project/feedapi and http://drupal.org/project/feedapi_mapper I had to patch it a little so it would get the orginialLink from feedburner feeds rather than the feedburner link

Based on the votes for individual recipes, I compute an average votes per recipe on each feed node (custom function) and list blogs in each category according to this average. This is done to encourage people to add the vote button to their site.

The main modules used for creating the directory and the digg clone section are

The save to recipe bit is done using the flag module and its default view which I slightly modified (http://drupal.org/project/flag)

I did a bit of template overriding with the views and the node types but nothing crazy. I have 3 page templates : home page (heavily customized), drigg stuff and directory and 4 views-row templates.

To make it more interesting (or at least, so I think...), I have added some social features. I think it might interest some people to know how I did it :

I tried to make the site attractive by

It took me about 3 months in my spare time to do, I'm a near drupal newbie but experienced developer. I love how drupal has done 80% of the work for me :) I used a lot of modules from mercmobily, you should check them out if you haven't yet.

Any thoughts ? Comments ? How clear is it to you as a visitor what makes this site special... I'm having a hard time articulating it.
Now the hard part... get people to join...

Thanks

Comments

congrats on...

likewhoa's picture

congrats on a very nice site, you should definally bring a lot of users to it as recipes directories are very active and since you have implemented social features I would see it growing for you. One minor issue was on the front-page you have a typo at "Take a few secondes to Register" it should be "seconds" not "secondes".

I like to see your code for implementing a node on the user profile page, also you should take a look at views_carousel it might be a better approach to using jcarousel. Overall the acquia theme you motified looks great and it has a nice clean look to it. Another thing I noticed was that while registered the "who's online" block seems to be showing my username twice, maybe you could try to reproduce. furthermore the /recipes page is a little off see http://omploader.org/vMTJoaA I am assuming the recipes list should be next to the leftside bar on there. Anyways, don't forget to share some of your patches and techniques with the rest of the community and congrats on the new site.

bending technology to fit businesses.

Thanks for your feedback

PGiro's picture

Thanks !

That image, are you sure it's the right one ? What browser are you using ?

I couldn't get views_carousel to work, I left an issue there. Got it working in no time with the jcarousel module.

Here is the code to add the comments on the user.

<h2 class="title">User wall</h2>
<h3>Leave a comment for this user (public)</h3>
<?php
    $sql
= 'SELECT n.nid FROM {node} n WHERE n.uid = %d AND n.type="user_node"';
   
$result = db_query($sql, $account->uid);
    while (
$row = db_fetch_object($result)) {
     
$nid = $row->nid;
    }
    if (
$nid) {
      print
comment_render(node_load($nid));
    }
?>

Here is the rule I use:

array (
  'rules' =>
  array (
    'rules_8' =>
    array (
      '#type' => 'rule',
      '#set' => 'event_user_insert',
      '#label' => 'wall_user_signed_up',
      '#active' => 1,
      '#weight' => '0',
      '#status' => 'custom',
      '#conditions' =>
      array (
      ),
      '#actions' =>
      array (
        0 =>
        array (
          '#weight' => 0,
          '#type' => 'action',
          '#settings' =>
          array (
            'title' => 'USER [account:user]',
            'type' => 'user_node',
            'node_access' => 0,
            '#argument map' =>
            array (
              'account' => 'author',
              'node_added' => 'node_added',
            ),
            '#eval input' =>
            array (
              'token_rules_input_evaluator' =>
              array (
                'title' =>
                array (
                  0 => 'account',
                ),
              ),
            ),
          ),
          '#name' => 'rules_action_add_node',
          '#info' =>
          array (
            'label' => 'Create a user_node for this user',
            'label callback' => false,
            'arguments' =>
            array (
              'author' =>
              array (
                'type' => 'user',
                'label' => 'User, which is set as author',
              ),
              'title' =>
              array (
                'type' => 'string',
                'label' => 'Title',
                'description' => 'The title of the newly created content.',
              ),
            ),
            'new variables' =>
            array (
              'node_added' =>
              array (
                'label' => 'New content of type user_node',
                'type' => 'node',
                'save' => true,
                'label callback' => 'rules_action_add_node_variable_label',
              ),
            ),
            'module' => 'Node',
          ),
        ),
      ),
    ),
  ),
)

I am on linux 2.6.28 kernel

likewhoa's picture

I am on linux 2.6.28 kernel using firefox-3.0.4

bending technology to fit businesses.

Did you use fbstatus or

icecreamyou's picture

Did you use fbstatus or facebook_status? I ask because you've posted in the facebook_status queue and they're easily confused.

Sorry about that mistake,

PGiro's picture

Sorry about that mistake, I've edited my post. I did use your module : http://drupal.org/project/facebook_status
Had a little trouble theming it into the top bar but it works well enough for now !

Great article ;)

SimonVlc's picture

Thanks for sharing it!!!

No content profile?

michelle's picture

I used Rules to create a node for each user that registers then I used some custom PHP code in user-profile.tpl.php to display the comment box of that node in the user profile and tada... there's a user wall !

Curious why you didn't use content profile?

Michelle


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

Didn't see a need for it

PGiro's picture

Hi Michelle,

Well, I looked at the description of the module. I understand that module in the context of 4.x (and 5?) where you didn't have the profile module but not as much today. Plus there was no screenshot of what it does nor demo..

Since I really wanted that functionality fast and not spend any time on it, I had to make the usual drupal decision : do I do it myself or do I use a module. In this case, my requirement was so simple, it was just simpler to do it myself with what I described above rather than installing, understanding and configuring.

Ah

michelle's picture

Content profile is for D6 just like bio/nodeprofile was for D5. It makes profiles out of nodes so you can use CCK fields instead of the core profile module, which has a lot of issues. It has some nice features such as being able to put the profile fields on the registration page.

Michelle


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

Michelle, It has some nice

PGiro's picture

Michelle,

It has some nice features such as being able to put the profile fields on the registration page.

How is that different from the profile module ?
Thanks

.

michelle's picture

The feature itself isn't different. But content profile makes the feature available to people using nodes for profiles.

Michelle


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

Top of your site

barkam's picture

hello, very nice site. I wonder whether the beam at the top of the page (login, registration) is a module of Drupal? How did You do it ?

Nice site Michelle, I'm

gallamine's picture

Nice site Michelle, I'm working on something similar (concept, not the same niche) and your site is inspiring.

I'm assuming your running D6?

Why did you choose Activity_Log over Hearbeat or Activity? Also why did you choose 'friendlist' over 'user relationships'?

Eh?

michelle's picture

I think you meant PGiro there? I'm not the one who did the site in the first post...

Michelle


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

I did because the main

PGiro's picture

I did because the main module in that site is drigg which is made by the same person who made friendlist and activity_log.
He has produced great code and is very passionate.

Unfortunatly, he seems to have other priorities right now.

feedapi_mapper patch

PeterZ's picture

Great writeup.

You mention "http://drupal.org/project/feedapi_mapper I had to patch it a little so it would get the orginialLink from feedburner feeds rather than the feedburner link".

Do you have that code available?

Thanks!

Social Networking Sites

Group notifications

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