02:10 PM 02:10 PM 02:10 PM

Adicionando eventos ao Plugin Total Facebook


Last week I searched a lot and tested different plugins to add facebook comments and like buttons. The one that I most liked was Plugin Total Facebook, it is easy and have good position settings.

Right now, the facebook does not notificate you about new comments or like that your post receives, so I decided to code this using Javascript SDK. I used the event interface to know when somebody Like or Comment on your publication.

A lot of my tests returned the FB object was inexistent (Uncaught ReferenceError: FB is not defined), the FB.init was already called (FB.init has already been called - this could indicate a problem) and other erros. So i modified the function fbsdk_includeWFC() to do the init async and add a function to be called when a "edge.create" (Like) event or "comment.create" (Comment) event are done.

function fbsdk_includeWFC(){
    $wfcglb = get_option('wfc_global');
    echo  "
 <div id=\"fb-root\"></div>
<script>

window.fbAsyncInit = function() {
    FB.init({
      appId      : '" . $wfcglb['appid'] . "', // App ID
      //channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

FB.Event.subscribe('comment.create', function (response) {
        jQuery.ajax({
url: 'test.html',
//success: function (data) { alert(response.href); },
//error: function (data) { alert(response.href); }
});
    });
 };

FB.Event.subscribe('edge.create', function (response) {
        jQuery.ajax({
url: 'test2.html',
//success: function (data) { alert(response); },
//error: function (data) { alert(response); }
});
    });
 };

(function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = '//connect.facebook.net/en_US/all.js';
     ref.parentNode.insertBefore(js, ref);
   }(document));</script>";

 echo "<!-- added by facebook total plugin -->";
}

Now you can modified the "url" from ajax calls to call a php url and pass parameters, and with this parameters send you an e-mail for example.

Hope this is useful for you

Matheus